没有可用的自动完成,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个回答

0

我在项目中的一个特定文件中遇到了同样的问题(其他文件的完成功能正常)。我也使用Eclipse Juno。

我通过删除文件中未使用的导入警告来解决问题...然后它又开始工作了!


0

这个复选框“Java建议”将被勾选,直到我失败并得到“没有可用的完成项”。之后,下次打开设置时,它将显示为未勾选。


0

我认为你遇到了3.6版本中已知的缺陷。请参见这里

尝试下载更新版本-自3.7版本以来已经修复了该问题。

[编辑] 我刚意识到你写了'Juno'- 你是否正在使用最新版本(4.2.2)?


1
我正在使用4.2版本,由于无法找到合理的解释,所以我报告了这个bug。 - Limbo Exile
我正想建议这个。 - iGili

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