当使用 Jasper 编译器(使用 Tomcat)和 Java 编译器预编译 JSP 时,我看到javac
这样的警告(我启用了javac
's-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<String>
,我们只有List
。我意识到编写 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(");
这清楚地表明硬编码的代码没有任何注入优雅的通用语法的希望。