没有可用的自动完成,Eclipse行为异常。

27
我认为我尝试了每一个建议的解决方案,但这个Eclipse自动完成问题相当特别:
  1. 我启动Eclipse,内容协助正常工作;
  2. 我想在我的Swing项目中创建一个LineBorder;
  3. 我输入LineBorder panelBorder = new Li并按下Ctrl+Space;
  4. 没有弹出窗口出现,在状态栏中以红色写入“无可用完成”;
  5. 我尝试在先前内容协助正常工作的元素上使用Ctrl+Space,但它不再起作用。
  6. 我在其他项目上尝试同样的事情,在关闭和重新打开它后再次在同一项目上尝试,在清理和内容协助之前它可以很好地工作,然后它会崩溃。

我尝试过:

  1. 在“首选项->Java->编辑器->内容协助->高级”中重置为默认值;
  2. 检查同一菜单中的每一个复选框;
  3. 创建一个新的工作区并在那里尝试;
  4. 删除.metadata/.plugins/org.eclipse.jdt.core中的.index文件和“savedIndexNames.txt”;
  5. 检查是否存在重复的库。

我没有尝试重新安装Eclipse。我使用的版本是Eclipse IDE for Java Developers (Juno)。

帮助信息:

看起来什么都不起作用。

更新:

按照 iGili 建议,检查了日志。 在失败时出现了一些异常:

org.eclipse.e4.core.di.InjectionException: org.eclipse.core.commands.ExecutionException: While executing the action, an exception occurred
Caused by: org.eclipse.core.commands.ExecutionException: While executing the action, an exception occurred
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.eclipse.jdt.internal.codeassist.InternalCompletionProposal.findConstructorParameterNames(InternalCompletionProposal.java:257)
    at org.eclipse.jdt.internal.codeassist.InternalCompletionProposal.findParameterNames(InternalCompletionProposal.java:1456)
    at org.eclipse.jdt.ui.text.java.CompletionProposalLabelProvider.appendUnboundedParameterList(CompletionProposalLabelProvider.java:113)
    at org.eclipse.jdt.ui.text.java.CompletionProposalLabelProvider.createMethodProposalLabel(CompletionProposalLabelProvider.java:272)
    at org.eclipse.jdt.ui.text.java.CompletionProposalLabelProvider.createStyledLabel(CompletionProposalLabelProvider.java:570)
    at org.eclipse.jdt.internal.ui.text.java.LazyJavaCompletionProposal.computeDisplayString(LazyJavaCompletionProposal.java:262)
    at org.eclipse.jdt.internal.ui.text.java.LazyJavaCompletionProposal.getStyledDisplayString(LazyJavaCompletionProposal.java:238)
    at org.eclipse.jface.text.contentassist.CompletionProposalPopup.handleSetData(CompletionProposalPopup.java:841)
    at org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$24(CompletionProposalPopup.java:831)
    at org.eclipse.jface.text.contentassist.CompletionProposalPopup$3.handleEvent(CompletionProposalPopup.java:593)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
    at org.eclipse.swt.widgets.Table.checkData(Table.java:1166)
    at org.eclipse.swt.widgets.Table.wmNotifyChild(Table.java:6749)
    at org.eclipse.swt.widgets.Control.wmNotify(Control.java:5534)
    at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1896)
    at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:5086)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4584)
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
    at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1627)
    at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2069)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4989)
    at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
    at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:564)
    at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:430)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4623)

接下来就是一长串的堆栈跟踪信息,我不知道发布长堆栈跟踪信息的惯例是什么。


当我在我的Eclipse上检查时,它很好用,我使用的是同一个Eclipse。 这只发生在这个例子上吗?还是CTRL + Space根本就不起作用? - knowbody
在我尝试这个例子之前,Ctrl+Space几乎可以在任何地方使用,但在之后却完全无法使用。 - Limbo Exile
请查看此链接:http://blog.rtwilson.com/how-to-solve-the-ctrl-space-auto-complete-not-working-problem-in-eclipse/,该链接提供了如何解决Eclipse中Ctrl+Space自动完成无法工作的问题。 - knowbody
我认为Ctrl+Space没有被分配给其他任务,因为如果是这样的话,它根本不会起作用。在我的情况下,当我重新启动Eclipse /重新打开项目/清理项目直到我尝试使用给定示例的自动完成时,它又可以正常工作了。 - Limbo Exile
你尝试过这个方法吗:进入你的工作区目录,然后进入 .metadata.plugins\org.eclipse.jdt.core 目录。关闭 Eclipse,重命名该目录,然后重新打开工作区? - knowbody
显示剩余5条评论
13个回答

80

我也遇到了这个问题。请前往“Windows” -> “首选项” -> “Java” -> “编辑器” -> “内容辅助” -> “高级”选项卡。确保“Java建议”复选框在默认的内容辅助列表(弹出窗口的第一个面板)中被勾选。

通过单击底部的“恢复默认值”按钮,“Java建议”可以自动选中。


这对我确实起作用了,但非常奇怪的是,这个选项默认是禁用的! - klausch

5
回到高级内容辅助偏好设置页面,恢复默认设置。使用“确定”按钮关闭对话框。

3
我已经多次这样做了,但没有起到作用。 - Limbo Exile

2

需要选择“Windows -> Preferences -> Java -> Editor -> Content Assist -> Advanced(Java建议)”。

原始答案翻译为“最初的回答”。


2

这些答案都没有帮助到我:Java建议已经被勾选了,还原默认值也没有用。只有在我重新启动Eclipse后才开始工作。


2
我曾经遇到过同样的问题。实际上,我已经看到了内容助手弹出框,但它比一般情况下要小几个像素。(是谁把它缩小了呢?为什么会这样呢?真是毫无头绪...) 但是如果你发现在通常应该出现内容助手的地方看到了奇怪的东西(在我的案例中是字母'Rp',但我想任何东西都可能),试着扩大它,你就有可能重新得到它了。祝好运。

1
我成功的方法是创建一个新的工作区,并将所有项目复制到该工作区。现在问题只出现在先前的工作区中。

0

前往Eclipse → 首选项 → Java → 编辑器 → 内容辅助 → 恢复默认值

然后进行项目 → 清理


0

我刚刚在Eclipse版本2019-06(4.12)中遇到了同样的问题。对我来说,进行项目清理解决了这个问题。


0
我今天早上无法扩展sysout。浪费了几个小时后,我发现我试图在方法外部放置System.out.println()。当我将其放在方法内部时,一切都完美运行。

0

我刚刚解决了在Juno中切换工作区然后再切换回来的同样问题。其他解决方案都没有起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接