【发布时间】:2009-04-22 20:48:35
【问题描述】:
当使用 Jasper 编译器(使用 Tomcat)和 Java 编译器预编译 JSP 时,我看到类似这样的 javac 警告(我启用了 javac 的 -Xlint 标志):
warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List
_jspx_dependants.add("/some-jsp.jspf");
现在,它“只是一个警告”,但我喜欢干净的构建,所以我自然想摆脱警告。当然,我可以关闭 -Xlint 以进行 JSP 编译,但 -Xlint 是好东西,所以它会保留。
在此示例警告中,问题在于未使用通用语法。我们只有List,而不是List<String>。我意识到编写 Jasper 的好人必须迎合那些仍然被锁在 Java5 之前的世界中的不幸灵魂。没关系,但我为什么要遭受这些警告呢?
是否有一些众所周知的方法可以消除由 Jasper JSP 编译器创建的 Java 源代码引起的 javac 警告?我对特定于 IDE 的解决方案不感兴趣(尽管那将是某些使用特定 IDE 的人的部分解决方案)。我正在寻找一个普遍适用的解决方案。
对 Jasper 源代码的扫描没有发现任何会导致泛型语法发射的“Java 5+”开关。事实上,恰恰相反,我发现了这个:
apache-tomcat-6.0.18-src/java/org/apache/jasper/compiler/Generator.java:494: out.printin("_jspx_dependants = new java.util.ArrayList(");
这清楚地表明硬编码的代码没有任何注入优雅的通用语法的希望。
【问题讨论】:
标签: java jsp tomcat compiler-warnings