2012-04-03 55 views
0

我在Eclipse Indigo项目中使用了一个名为Weka的开源java库。该库看起来有点过时,所以Eclipse向我展示了数千条关于其代码的警告。一个典型的例子是:如何避免必须使用@SupressWarnings?

ArrayList的是原始类型。引用泛型类型的ArrayList < E> 应该是参数

在谈到这样一行:

ArrayList t = new ArrayList(); 

Eclipse的速战速决表明我可以转换上面的代码中使用泛型或我可以添加一个@SuppressWarnings'rawtypes'注释作为修复。

但无论这些修补程序涉及更动开源项目的代码,我不得不做这些改变几个(几百?)次以上。

相反,可能会有一些Eclipse全局设置(或Java编译器?),在那里我可以表明我不想被警告的具体项目?

+0

当我使用谷歌,我得到... http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fpreferences%2Fjava%2Fcompiler% 2Fref-preferences-errors-warnings.htm – 2012-04-03 16:27:31

+0

谢谢Brian。我已经编辑了这个问题,以反映我并不关心一个警告信息的事实 - 我想避免所有这些信息用于特定项目。 – urig 2012-04-05 11:36:27

回答

1

有人建议您只需通过Window> Preferences关闭“违规”警告,但是它会关闭工作区中的所有项目,包括包含您自己的Java 1.5 +代码的项目。这是一个坏主意,'因为如果它们出现在你的代码中,你应该注意警告。 (如果你忽略他们,你是容易得到意想不到的运行时异常。)

另一种可能性是更改项目设置Java编译器的源代码级别设置为Java 1.4或更早版本。你应该只有在Weka项目上做到这一点。包含您的代码的项目需要使用至少Java 1.5的源代码级别,因为您使用的是泛型。


谢谢。当我将项目部署到运行JRE 1.6的生产服务器时,可能会在稍后导致问题吗?我不需要在那里存在JRE 1.4吗?

不......一对夫妇的原因:

  • 除非你正在修改Weka中,你可以使用原来的JAR和忽略的Eclipse创建的所有构建工件。

  • 源级别和目标级别不同。源代码级别表示源代码必须符合的Java语言版本。目标级别表示应该使用什么版本的类文件格式。您可以让Java编译器为Java 1.4源代码生成Java 1.6字节码格式。 (但反之亦然)。

  • Java 1.6 JRE将很高兴地运行Java 1.4 JAR。

而且,当我做到这一点?你的意思是项目>属性> Java编译器>编译器符合性级别?

是的。请注意,它允许您独立指定源级别和目标级别......模仿Java编译器仅允许某些组合的约束条件。

+0

+1,这比在IDE中关闭某些警告更好。 – darrengorman 2012-04-03 16:41:34

+0

谢谢。当我将项目部署到运行JRE 1.6的生产服务器时,可能会在稍后导致问题吗?我不需要在那里存在JRE 1.4吗? – urig 2012-04-03 16:42:38

+0

另外,我在哪里可以做到这一点?你的意思是项目>属性> Java编译器>编译器符合性级别? – urig 2012-04-03 16:51:10

1

尝试Window-> Preferences,Java-> Compiler-> Errors/Warnings。我看到底部附近有一个“通用类型”部分。我不知道这正是您想要的,但根据我的经验,这是忽略特定Eclipse警告的好地方。

+0

+1,但从我的经验来看,这是一个打开更多警告的好地方。 – 2012-04-03 16:30:09

+0

谢谢。绝对是一种选择。当然,我需要点击“配置项目特定设置...”并选择我的Weka项目来处理。但不利的一面是,我必须查看一长串不同的警告类型,并将每个警告类型设置为忽略。 A但麻烦。 – urig 2012-04-03 16:44:22

1

在Eclipse导航到窗口 - >首选项 - > Java的>反编译>错误/警告 - >泛型类型在这里你会发现“原始类型的使用”,你可以设置为忽略,而不是警告类别。

4

窗口>首选项>的Java>编译器>错误/警告>泛型类型。或者,可以通过右键单击项目>属性> Java>错误/警告>选中“启用项目特定设置”来逐项目设置项目(如果您的工作区中还有其他项目需要保持不变)然后像以前一样。