2009-04-22 2 views
2

때 미리 컴파일 재스퍼 컴파일러와 JSP를 한 후, 나는 javac 경고 다음과 같이 볼 수있는 자바 컴파일러 (Tomcat을 사용) (내가 가진 javac-Xlint 플래그 사용) : 이제Jasper에서 JSP에 대한 Javac 경고를 제거하면 Java 소스 파일이 생성 되었습니까?

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> 대신 List 만 있습니다. Jasper를 작성하는 좋은 사람들은 Java5 이전의 세계에서 잠겨있는 불행한 영혼을 보호해야한다는 것을 알고 있습니다. 괜찮습니다.하지만 왜이 경고를 받아야합니까?

은 재스퍼 JSP 컴파일러에 의해 생성 된 자바 소스 코드에 의해 발생 javac의 경고를 제거하기 위해 잘 알려진 방법이 있습니까? 저는 IDE 전용 솔루션에 관심이 없습니다. (특정 IDE를 사용하는 일부 사람들에게는 부분적인 해결책이 될 수 있습니다.) 나는 일반적으로 적용 가능한 해결책을 찾고있다.

은 재스퍼 소스 코드의 검사는 일반적인 구문 방출을 야기하는 어떤 "자바 5+"스위치를 공개하지 않았다. 명확하게 우아한 일반적인 구문의 주입을위한 희망 잃은 하드 코드 된 코드를 보여줍니다

apache-tomcat-6.0.18-src/java/org/apache/jasper/compiler/Generator.java:494:   out.printin("_jspx_dependants = new java.util.ArrayList("); 

: 사실, 반대로 나는이 발견했다.

답변

1

당신이하고 걱정하지 않는다 알고있는 경고를 비활성화로 :

-Xlint : xxx는 -Xlint 지원 경고 이름 중 하나입니다 -xxx
해제 경고 XXX : 아래 xxx.

here을 참조하십시오.

+0

이것은 좋은 생각이지만, JSP 코드에 해당 유형의 경고를 생성하는 스크립틀릿이 있다고 가정합니다 (저는 스크립틀릿의 팬이 아니지만 일부는 있다고 말하려합니다). 나는 그러한 경고를 가리고 싶지 않다. 내 코드의 경고에 대해 알고 싶습니다. 간단히 말하면 모든 검사되지 않은 경고를 끄는 것은 경우에 따라서는 너무 거칠 수있는 것처럼 보입니다. –

+0

물론이 예제에서는 특정 경고 만 해제 할 수 있습니다. -Xlint : -nnn 플래그가 많이 필요할 수도 있지만 예기치 않은 경고가 표시됩니다. –

+0

어쩌면 나는 당신의 해결책이 특정 경고/인스턴스/생략을 허용하는지, 아니면 특정 유형의 모든 경고 /를 허용하는지 이해하지 못할 수도 있습니다. 내 코드와 생성 된 Java 코드가 모두 "검사되지 않음"경고를 발생시키는 것으로 가정합니다. Jasper 코드에서 경고를 무시하고 싶지만 내 코드에서 경고를보고 싶습니다. 솔루션에서 다음과 같이 표현할 수 있습니까? "특정 미확인 경고는 비활성화하고 다른 미확인 경고는 비활성화하지 않습니까?" 나는 "-Xlint : -unchecked"가 모든 경고를 비활성화 할 것이라고 생각한다. –

0

저는 Ant 기반 빌드를 사용하고 있습니다. 이 문제에 대한 나의 현재 솔루션은 생성 된 잘못된 재스퍼을 편집하는 것입니다 자바 자리에서 다음과 같은 개미 필터링 코드 코드 ". 이중 이동"

<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이를 이해 참조하십시오