我正在使用Eclipse Juno,并且从未遇到过任何问题,直到它的内容助手仅在我代码的某些部分停止工作。下面的代码显示了我在说什么:
mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
mWTBatch.setText(mRTBatch.getText());
mWTExp.setText(mRTExp.getText());
mWTName.setText(mRTName.getText());
mWTQuantity.setText(mRTQuantity.getText());
/* Here content assist is not working */
}
});
mWTBatch.setText("Here it is working again");
这段代码就在我类的一个方法中。问题是它在类的方法中工作正常,但在对象(new ActionListener(){})内部,它返回"无默认建议"。当我使用"Ctrl+空格"或在我想获得建议的对象后键入"."时,它具有此行为。我已经在这里搜索了解决方案并在谷歌上搜索了它,但找不到解决方案。我已经尝试过:
-
Window->Preferences->Editor->Content Assist->Advanced
并检查了Java Proposals
。它没有用。我什至尝试自己检查它,而不仅仅是使用Restore Defaults
.我还尝试了另一张桌子上的Java Proposals
。无。最后,我尝试检查所有带有Java
的字段。什么都没用。 - 完全删除了我的工作区文件夹,创建了一个新文件夹并导入了我的项目。由于我的项目来自SVN存储库,因此我在"trunk"文件夹中使用了项目文件夹,但是导入时没有将文件夹的内容复制到工作区(我需要它在存储库中)。仍然没有,它继续错误。
- 我将上述代码的相同情况复制到另一个不同项目的另一个类中,该项目也被导入到工作区,但其内容已复制到工作区。内容有助于
worked
那个。 - 然后,我用上面的原始代码重新导入了该项目,但这次将其内容复制到工作区(这意味着它与SVN存储库不再相关)。它
didn't work
。 - 我还检查了
ctrl+space
是否绑定到 Eclipse 设置上的内容辅助,没问题。我还检查了它是否与Windows 7语言栏的高级键设置无关。我在互联网上看到这可能是问题,但这不是我的情况。 - 我什至在工作区上创建了一个新的 Java 项目,并从旧项目中一一复制了.java文件,手动设置了所有构建路径,最终它仍然不起作用。
对于上述所有前四种情况,我还清理了项目并关闭并重新打开了它们,不要忘记在每次操作后刷新它。 谁能告诉我如何解决这个问题?我想找到解决这个问题的方法,这样其他人可能不会像我一样在 2 天内使用它。我认为我的问题很重要,因为我在这里收集了许多通过谷歌搜索问题和从 StackOverflow 找到的可能的解决方案,但没有解决它。
前几天我偶然发现了这个问题,在看到这篇文章后,我想我必须忍受它。
但是,我确实发现了一个围绕它的"黑客":
mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener( //<---------------------- Problem arises because we're inside a function declaration ...
new ActionListener()
{ // <--------------------------------------------- ... yet we're trying to write a function
public void actionPerformed(ActionEvent e)
{
/* Here content assist is not working */
}
}
);
mWTBatch.setText("Here it is working again");
从内容助手的角度来看,这是完全错误的,所以我们需要给它一点帮助:
mWTBatch.setText("Here content assist works");
medCopyBtn.addActionListener(
new ActionListener()
// <--------------------------------------------- CURLY BRACKET MISSING
public void actionPerformed(ActionEvent e)
{
/* Here content assist IS WORKING */
}
}
);
mWTBatch.setText("Here it is still working");
这显然会在编译时给你一个错误,但它让你可以完全访问函数声明其余部分的内容辅助。此外,从函数声明中删除哪个大括号并不重要,只要它是左大括号即可。
还有一点,如果您像我上面所做的那样只删除开始的大括号,那么在大多数情况下,eclipse 不会自动添加另一个结束大括号(因为当您输入新的开始大括号时,您已经平衡了大括号的开始 vr 关闭)。您也可以通过删除右大括号来解决此问题,但是您必须记住将两个大括号放回原处。
希望有助于这个问题在过去一年中获得的 1165 次观看=)
在开始菜单上搜索"更改显示语言"。"更改键盘">查看"常规">"已安装的服务"下是否有任何非英语键盘。如果您不仅有英语,那么按 Ctrl+空格键会将焦点从 Eclipse 更改为任务栏上的语言选择器。如果这是您的问题,请从列表中删除任何其他键盘语言。