在Jasper生成的Java源文件中消除JSP的Javac警告?

时间:2009-04-22 20:48:35

标签: java jsp tomcat compiler-warnings

使用Jasper编译器(使用Tomcat)预编译JSP,然后使用Java编译器时,我看到javac这样的警告(我启用了javac的{​​{1}}标志) :

-Xlint

现在,它只是“警告”,但我喜欢干净的构建,所以我自然希望摆脱警告。当然,我可以关闭warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List _jspx_dependants.add("/some-jsp.jspf"); 进行JSP编译,但-Xlint是好东西,所以它会保留。

在此示例警告中,问题是未使用通用语法。我们只有-Xlint而不是List<String>。我意识到写好贾斯珀的好人必须迎合那些仍然被锁定在Java5之前世界的不幸的灵魂。那很好,但为什么我要遭受这些警告?

是否有一些众所周知的方法可以消除由Jasper JSP编译器创建的Java源代码引起的javac警告?我对IDE特定的解决方案不感兴趣(尽管那可能是某些使用特定IDE的人的部分解决方案。我正在寻找一个普遍适用的解决方案。

对Jasper源代码的扫描没有发现会导致通用语法发射的任何“Java 5+”开关。事实上,恰恰相反,我发现了这一点:

List

清楚地显示了硬编码的代码,无法注入优雅的通用语法。

2 个答案:

答案 0 :(得分:1)

禁用您知道但不关心的警告:

  

-Xlint:-xxx
  禁用警告xxx,其中xxx是警告名称之一   支持-Xlint:xxx,在下面。

请参阅here

答案 1 :(得分:0)

我正在使用基于Ant的构建。我目前解决这个问题的方法是使用以下Ant过滤代码就地编辑有问题的Jasper生成的Java代码:

<move todir="WEB-INF/src">
    <fileset dir="WEB-INF/src"/>
    <globmapper from="*.java"
                to="*.java.foo"/>
    <filterchain>
        <tokenfilter>
            <replacestring from="private static java.util.List _jspx_dependants;"
                           to="private static java.util.List&lt;String&gt; _jspx_dependants;"/>
            <replacestring from="_jspx_dependants = new java.util.ArrayList"
                           to="_jspx_dependants = new java.util.ArrayList&lt;String&gt;"/>
            <replaceregex pattern="public final class (.*) extends org.apache.jasper.runtime.HttpJspBase"
                          replace="@SuppressWarnings(&quot;serial&quot;)&#xA;public final class \1 extends org.apache.jasper.runtime.HttpJspBase"/>
            <replacestring from="(PageContext)_jspx_page_context"
                           to="_jspx_page_context"/>
        </tokenfilter>
    </filterchain>
</move>
<move todir="WEB-INF/src" overwrite="true">
    <fileset dir="WEB-INF/src"/>
    <globmapper from="*.java.foo" to="*.java"/>
</move>

请参阅this question以了解“双重移动”。