Eclipse Java内容助手无法正常工作。

20
在Eclipse 3.4和3.5中,我的Content Assist停止工作了。当我输入类的前几个字符并按下CTRL空格键后,经过一段延迟时间,我会收到以下错误消息:alt text http://locuslive.com/webdrive/JDTscreenshot.png。无论我启用或禁用哪些建议,我都会得到这样(或类似)的消息。 我尝试过更改Xms/Xmx值、使用-clean启动Eclipse、创建新的工作区并导入我的项目等方法,但这些都没有起作用。我看到一些帖子暗示可能有其他应用程序接管了CTRL空格键或以其他方式干扰,但是除了运行新的Eclipse之外,我什么都没有,问题仍然存在。我的问题与此帖子非常相似,尽管是在较晚的版本和OSX 10.5.7上。有人对如何解决这个问题有任何建议吗?谢谢。更新:对于任何感兴趣的人,我使用Eclipse 3.5 Classic获得了最佳结果(即不包括Mylyn)。我还使用了由VonC下面链接的bug报告中指定的设置。有趣的是,Classic没有一些视图,例如Snippets,但这些很容易从另一个发布版本中添加。

更新2::即使使用最新版本的Eclipse(3.6 M1),该问题仍然存在。这是由Altova Mapforce生成的用于处理我们应用程序中EDIFACT转换的大型JAR文件引起的。将该JAR添加到构建路径中会导致问题重现,而更改内容辅助设置将无济于事。可以在https://bugs.eclipse.org/bugs/show_bug.cgi?id=289057上看到此错误(和JAR文件)。


可能与Bug 281871相关,请参见我的回答的第二部分。 - VonC
您可以更改配置以解决此问题:https://dev59.com/52nWa4cB1Zd3GeqP1o2e#46727305 - mkebri
14个回答

19

Mylyn FAQ中确实提到:

为什么我使用内容辅助时会收到错误消息?

如果在调用内容辅助后,您看到一个错误消息对话框,其中包含以下内容:

 The extension took too long to return from the 'computeCompletionProposals()' operation

http://wiki.eclipse.org/images/0/0a/Mylyn-content-assist-timeout.gif

这很可能是由于某些操作(例如垃圾回收)中断了建议操作导致的。如果不再出现,请忽略它;如果仍然出现,请增加Eclipse的内存(例如通过-Xmx384M命令行参数)。有关详细信息,请参见bug 141457

请注意,Mylyn对内容辅助计算只会增加很少的开销,但标准内容辅助机制不会报告此类超时(即计算建议需要超过5秒)。
如果您正在使用的系统太大,以至于增加内存无法减少定时以避免消息,请尝试禁用特定于Mylyn的内容辅助,如上所述。但是请在bug 141457上发表评论。


您可以在此SO answer中找到好的Eclipse设置。
既然您已经尝试增加内存,那么可以在bug 141457上留下评论。

这可能与bug 281871有关,只在Eclipse 3.5.1和3.6中进行了修复。

我现在看到了。问题在于,如果索引尚未更新,代码辅助开始使用Java模型

您可以等待索引器完成或者通过设置“org.eclipse.jdt.ui.codeAssistTimeout”Java环境变量来增加超时时间,例如启动Eclipse时:

 -vmargs -Dorg.eclipse.jdt.ui.codeAssistTimeout=60000

谢谢。听起来像是 bug 281871。我已经加入了 codeAssistTimeout,现在一切都正常了。现在只需要决定是继续使用 Mylyn 还是 EclipseClassic。 - Damo

12

我也曾遇到了同样的问题:在Eclipse 3.7.2下,Content Assist无法正常工作。在这个版本之前,它一直很稳定,但是我不知道为什么它从来没有为我工作过。

我没有收到任何错误消息或提示,也不知道为什么它无法工作,花了我一些时间才找到“Java Proposals”选项。

它位于Eclipse首选项-> Java-> Editor-> Content Assist-> Advanced中。

确保选中Java Proposals。

你不希望看到重复的Java建议,所以不要选中Java Non-Type Proposal和Java Type Proposals。


2

对我来说,它的解决方法是在“首选项”>“通用”>“键”>“恢复默认值”中进行操作。

不知道这是否有点疯狂,但这是在经过了所有谷歌搜索和尝试后最终有效的方法。

祝好, Manish


1
如果你仔细阅读问题,你会发现这是一个与大型JAR文件有关的Eclipse bug。这个问题在Eclipse的3.6M6版本中已经修复了。 - Damo
这解决了我在3.7版本中遇到的问题。 - Tom Kidd

1

看起来你的 Mylyn 安装可能出了问题,尝试移除 Mylyn 插件并查看效果。


Paul(和Daniel),感谢你们关于Mylyn的提示。我下载了没有Mylyn的Eclipse 3.5 Classic,这使得一些区别。至少我现在可以继续工作了。干杯。 - Damo

1
当我遇到类似的问题时,我简单地卸载了Mylyn/Java集成。我不使用Mylyn,尽管我知道一些人认为它是自面包切片以来最好的东西,但我从未发现它有什么作用,除了让我的名称补全出现问题。
请注意,您想禁用那个错误消息告诉您的"Java建议(任务专注)"。这也会禁用名称补全。

0

Mylyn(或其代码辅助)似乎对构建路径中的资源非常挑剔。

我曾遇到此问题,原因是我意外地将二进制文件添加到了 Eclipse 的构建路径中。这不会引起任何编译错误或警告,但会在代码完成过程中引发你在帖子中提到的异常。


0

我遇到了同样的问题。

我在eclipse.ini文件中,在-startup选项之前,顶部添加了-vm选项。

问题解决了!

-vm
C:\Program Files\Java\jdk1.7.0_71\jre\bin\server\jvm.dll
-startup

顺便说一下,我的Eclipse版本是4.4.1。


0
尝试在Java -> Editor -> Content Assist -> Advanced中恢复首选项。

对我有用!
我使用的是STS 4.14.0.RELEASE,在意外系统重启后显示了相同的错误。 STS甚至不允许我通过Ctrl +单击导航到其他类,搜索项目中的类/方法/变量引用。


0

我的一个JAR文件存储在网络共享中,它一直挂起了超过10秒钟。将JAR文件复制到本地驱动器,更新项目以指向本地文件,我的挂起时间消失了。


0

我也遇到了同样的问题,但是我的问题是在将项目从gwt 1.5升级到gwt 1.7时出现的。 我阅读了您的评论,并进行了两个更改。 将Xmx增加到-Xmx768m,并取消标记Java建议(任务焦点),仅标记Java建议。 自从我做出这些更改以来,一切都很顺利。 希望对您有所帮助。


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