在JSP文件中抑制Java未经检查的警告

我有一个使用jstl和Struts 1标签的遗留webapp。 当我使用Java 5/6预编译JSP文件时,jstl和Struts 1标记会抛出有关“未检查或不安全操作”的警告。 例如,如果我使用以下标记:

 

抛出以下警告:

 [javac] Note: Some input files use unchecked or unsafe operations. [javac] Note: Recompile with -Xlint:unchecked for details. 

如果我使用-Xlint重新编译:unchecked,我会获得有关违规JSP标记库的内部工作的详细信息。 我想压制所有未经检查的操作警告。 我认为使用-Xlint:-unchecked会抑制警告,但事实并非如此。

在编译JSP页面时如何禁止这些警告? 重新编写JSP标记库或更新一千个JSP页面是不切实际的。 我正在寻找一个编译器标志来全局禁用警告,所以我可以看到除了未经检查的警告之外的所有警告。 谢谢!

这些消息是(JDK> = 1.5的强制)注释,而不是警告。

 compiler.note.unchecked.plural=\ Some input files use unchecked or unsafe operations. 

默认编译器行为与-Xlint:-unchecked相同-Xlint:-unchecked

使用-Xlint:unchecked您可以打开警告,报告每个实例。

 compiler.warn.unchecked.assign=\ [unchecked] unchecked assignment: {0} to {1} ... 

强制性注释不能单独禁用,它们都使用-Xlint:none禁用。 不幸的是,其他警告也被禁用。

您可以检查备选方案的其他响应,但过滤编译器输出消息似乎是最简单的解决方案。

你是对的

-Xlint:unchecked

与你想要的相反,但你也可以使用

-Xlint:-unchecked

注意那里的额外“ – ”。

这将禁用有关未经检查的操作的所有警告,而不仅仅是标记库生成的警告,但仍会显示其他警告。

禁用该警告的最佳方法是停止在JSP中使用Java代码。 开始习惯使用JSTL或JSF(根据需要使用自定义标记库)。

但是对于遗留应用程序,你最不可能做到这一点,而且你只需要接受警告。 当然,您可以将-nowarn标志添加到编译器,但这将禁用所有警告,而不仅仅是这个警告,这可能超出您的需要。