我正在Eclipse Indigo项目中使用名为Weka的开源Java库。该库似乎有些过时,因此Eclipse向我展示了有关其代码的数千条警告。一个典型的例子是:


  ArrayList是原始类型。泛型类型ArrayList 的引用
  应该参数化


参考这样的一行:

ArrayList t = new ArrayList();


Eclipse的快速修复表明,我可以将以上代码转换为使用泛型,也可以添加@SuppressWarnings'rawtypes'注释作为修复。

但是,这两个修复程序都涉及对开放源代码项目的代码进行更改,而我不得不将这些更改进行多次(数百次?)。

取而代之的是,对于Eclipse(或Java编译器?)是否可能有一些全局设置,我可以在其中表明我不想被警告某个特定项目?

最佳答案

建议您仅通过“窗口”>“首选项”关闭“违规”警告,但是对于工作空间中的所有项目(包括包含自己的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编译器仅允许特定组合的约束为模。

09-27 00:16
查看更多