编程语言
首页 > 编程语言> > java – Eclipse内容辅助在代码的某些部分不起作用

java – Eclipse内容辅助在代码的某些部分不起作用

作者:互联网

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

> Window-> Preferences-> Editor-> Content Assist-> Advanced和checked Java Proposals.它没用.我甚至尝试过检查它,而不仅仅使用Restore Defaults.我还尝试了另一个表中的Java Proposals.没有.最后,我尝试用Java检查所有字段.没有任何效果.
>完全删除了我的工作区文件夹,创建了一个新文件夹并导入了我的项目.由于我的项目来自SVN存储库,我使用了“trunk”文件夹中的项目文件夹,但是在导入时我没有将文件夹的内容复制到工作区(我需要它在存储库中).仍然没有,它继续错误.
>我将上面代码的相同情况再现到另一个不同项目的另一个类中,该项目也导入到工作区,但将其内容复制到其中.内容辅助适用于那个.
>然后我使用上面的原始代码重新导入项目,但这次将其内容复制到工作区(这意味着它与SVN存储库无关).它也没用.
>我还检查了ctrl空间是否绑定到Eclipse设置上的内容辅助,这没关系.我还检查了它是否与Windows 7语言栏的高级键设置无关.我在互联网上看到可能有问题,但不是我的情况.
>我甚至在工作区上创建了一个新的Java项目,并从旧项目中逐个复制.java文件,手动设置所有构建路径,最后它仍然不起作用.

对于上面的前四个案例,我还清理了项目并关闭并重新打开它们,不要忘记在每次操作后刷新它们.谁能告诉我如何解决这个问题?我想找到解决这个问题的方法,以便其他人可能不会像我一样持续2天.我认为我的问题很重要,因为我在这里收集了许多通过Google搜索问题和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观看这个问题在过去一年中获得了=)

标签:java,eclipse,eclipse-juno,content-assist
来源: https://codeday.me/bug/20190703/1368059.html