2015年2月18日水曜日

JSPのコンパイル時に非常に奇妙なエラーが出る

This static method of interface XXX can only be accessed as XXX
というような例外メッセージになる。

例えば、XXXインターフェースにyyyメソッドがあり、それをJSPでXXX.yyyと呼び出した場合。
その通りやってんだろうがよ!と怒りたくなる。つうか腹たつなもう。

解決策は、Tomcatのweb.xml、


<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
  <!-- こっから -->
  <init-param>
      <param-name>compilerSourceVM</param-name>
      <param-value>1.8</param-value>
  </init-param>
  <init-param>
      <param-name>compilerTargetVM</param-name>
      <param-value>1.8</param-value>
  </init-param>
  <!-- ここまで -->
        <load-on-startup>3</load-on-startup>
</servlet>


「こっからここまで」を足したら直った。けど、今までEclipse上のTomcatでは1.7の指定で(JREは1.8だった)大丈夫だったのが解せない。1.7の指定が効いていなかったワケではなく、ちゃんとラムダとかはコンパイルエラーになってたのに。なんなんだ。


参考:
http://stackoverflow.com/questions/25360127/intstream-strange-error

0 件のコメント:

コメントを投稿