Seasar2でJava8対応した時の流れ

  • 17
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

初投稿
仕事でSeasar2のアプリをJava8にした時にハマったので、流れを含めて記事にしてみる

eclipseの設定で、プロジェクト・ファセットやコンパイラなどをJava8に

スクリーンショット 2016-01-21 23.25.30.png

Java8のコードを書いてみる

スクリーンショット 2016-01-21 23.26.21.png

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
[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を見てみると…

スクリーンショット 2016-01-21 23.40.39.png
この辺がなんか古そう

更新してみる

スクリーンショット 2016-01-23 14.40.56.png

もう一回ビルド

[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/{プロジェクト名}
スクリーンショット 2016-01-21 23.51.43.png
お、おお?

どうやらこいつが悪いらしい

jboss:javassist:jar:3.4.ga

ならば最新にしてみよう

seasarのライブラリに依存しているjavassistを除外して
スクリーンショット 2016-01-23 15.56.06.png

最新のjavassistを新たに依存関係として追加スクリーンショット 2016-01-23 15.58.25.png

これで動かすと…

スクリーンショット 2016-01-23 16.00.57.png

できた!!

まとめ

  • 単にJava8にしただけでは動いてくれない
  • mavenでビルドしているseasar2の場合、mavenプラグイン周りが古いことがあるので要更新
  • javassistがjava8で動くバージョンになっていないため、自分で依存関係を更新してやる必要がある

以上!