4

我正在使用 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 找到的可能解决方案,但没有任何解决方案。

4

2 回答 2

2

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

但是,我确实在它周围找到了一个“黑客”:

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 次浏览有所帮助 =)

于 2014-11-01T07:59:27.150 回答
0

Do a search for "Change display language" on the start menu. 'Change keyboards' > Look to see if you have any non English keyboards under 'General' > 'Installed services'. If you have more than just English then pressing Ctrl+Spacebar is changing your focus from Eclipse to the language selector on the taskbar. Remove any other keyboard languages from the list if that is your problem.

于 2014-05-01T14:22:16.487 回答