JspSourceDependent.getDependants() で悩む
とある案件で開発環境を構築していてはまったメモ。
既存のプロジェクトをTomcat5.5上にデプロイし、JSPを表示しようととしたら、、、
Generated servlet error:
The return type is incompatible with
JspSourceDependent.getDependants()
JSPの問題ではなさそうなのでいろいろ調べてみたところ、「Tomcat5.5上で、JSPをJDK1.4互換で動かすのは無理」っていうことみたいでした。というのは、、、
Tomcat5.5上でJSPを実行(サーブレットにコンパイル)すると、
java.util.List getDependants()というメソッドが生成される。が、Tomcat5.5に付属するjasper-runtime.jarには、
java.lang.Object getDependants()というメソッドが定義されている。よって、JDK1.4だと上記のエラー(return type is incompatible)が発生する、ということみたいです。JDK5.0だと、継承関係にある戻り値が許可されるから、上記問題は発生しない、と。
そもそも、そのプロジェクトは「Tomcat5.0上で動かしてください」となっていました。。。一応調べてみたところ、Tomcat5.0のjasper-runtime.jarには、
java.util.List getDependants()とありました。そりゃそうだ。