java.io.IOException: invalid constant type: 15

2022年4月11日IT,Java

Seasar2のプロジェクトのJavaをJava8にした所、

java.lang.RuntimeException: java.io.IOException: invalid constant type: 15

が発生しました。

原因

SeaSar2はJava8に対応していない部分があるらしいです。
今回のエラーを引き起こした具体的犯人は「javassist-3.4.ga.jar」でした。
こいつをJava8に対応するバージョンにしないと上記のエラーが発生するようです。

対処

javassistのJava8対応バージョンのjavassist-3.20.0-GAをゲットしました。
こいつをビルドパスに追加した所、エラーなく正常動作しました。

関連

Java8に対応していないjavassistを使用すると、

java.lang.RuntimeException: java.io.IOException: invalid constant type:18

というエラーが発生する可能性があります。
Java8で追加されたラムダ式とかを使用する時に発生するらしいです。
こいつもjavassistをjavassist-3.20.0-GAにしてやれば発生しなくなります。

まとめ

java.lang.RuntimeException: java.io.IOException: invalid constant type: 15

または

java.lang.RuntimeException: java.io.IOException: invalid constant type:18

が出たら、犯人はjavassist

2022年4月11日IT,Java

Posted by raishin