初投稿
仕事でSeasar2のアプリをJava8にした時にハマったので、流れを含めて記事にしてみる
eclipseの設定で、プロジェクト・ファセットやコンパイラなどをJava8に
Java8のコードを書いてみる
mavenでwarファイルを作成する、とこんなことが起きる
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.818 s
[INFO] Finished at: 2016-01-21T23:13:20+09:00
[INFO] Final Memory: 11M/189M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project seasar-maven: Compilation failure
[ERROR] /Users/kyuuuuuji/opt/workspace/seasar-maven/src/main/java/com/kyuuuuuji/action/IndexAction.java:[26,48] ラムダ式は-source 1.7でサポートされていません
[ERROR] (ラムダ式を使用可能にするには、-source 8以上を使用してください)
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
pom.xmlを見てみると…
この辺がなんか古そう更新してみる
もう一回ビルド
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.155 s
[INFO] Finished at: 2016-01-21T23:44:57+09:00
[INFO] Final Memory: 14M/205M
[INFO] ------------------------------------------------------------------------
できたっぽい?
じゃあ、ローカルで動かしてみよっと
http://localhost:8080/{プロジェクト名}
お、おお?
どうやらこいつが悪いらしい
jboss:javassist:jar:3.4.ga
ならば最新にしてみよう
seasarのライブラリに依存しているjavassistを除外して
これで動かすと…
できた!!
まとめ
- 単にJava8にしただけでは動いてくれない
- mavenでビルドしているseasar2の場合、mavenプラグイン周りが古いことがあるので要更新
- javassistがjava8で動くバージョンになっていないため、自分で依存関係を更新してやる必要がある
以上!