Eclipse内容有助于在代码的某些部分中不起作用

时间:2013-09-12 17:53:46

标签: java eclipse eclipse-juno content-assist

我正在使用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 + space"它时会出现这种情况。或输入"。"在对象之后我想得到建议。我已经在这里搜索了解决方案并用Google搜索了,但无法找到解决方案。我已经尝试过了:

  • 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天。我认为我的问题很重要,因为我在这里收集了许多通过Google搜索问题和StackOverflow找到的可能解决方案,并没有解决它。

2 个答案:

答案 0 :(得分:2)

前几天我偶然发现了这个问题,在看到这篇文章之后,我认为我不得不忍受它。

然而,我确实找到了一个" hack"围绕它:

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不会自动添加另一个结束花括号(因为当你输入新的开口花括号时,你&#39 ; ve 均衡开始vr关闭大括号)。你可以通过删除结束的花括号来解决这个问题,但是你必须记住要放回两个花括号。

希望这有助于1165观看这个问题在过去一年中获得了=)

答案 1 :(得分:0)

在开始菜单中搜索“更改显示语言”。 '更改键盘'&gt; 查看“常规&gt; 下是否有任何非英语键盘'已安装的服务'。如果你不仅仅是英语,那么按Ctrl +空格键就可以将你的注意力从Eclipse改为任务栏上的语言选择器。如果这是你的问题,请从列表中删除任何其他键盘语言。