さて、PlayFramework 2.1で使えていた@NotNullアノテーションが2.2で開発をした時にエラーを吐くようになりました。
その解決方法についていろいろ調べて詰まったので、備忘録として控えておきます。
まず結論から言うと、
Play! 2.1 アプリを Play! 2.2 に移行した作業の覚え書き
の
@NotNullアノテーション がなくなった
の節にある以下の様な書き換えで対応するのが良いようです。
その解決方法についていろいろ調べて詰まったので、備忘録として控えておきます。
まず結論から言うと、
Play! 2.1 アプリを Play! 2.2 に移行した作業の覚え書き
の
@NotNullアノテーション がなくなった
の節にある以下の様な書き換えで対応するのが良いようです。
2.1
import com.avaje.ebean.validation.NotNull;
2.2
import javax.validation.constraints.NotNull;
ここに至るまでに試行錯誤した結果を書いておきます。
2.1で使えていた@NotNullアノテーションをそのまま移植
そのまま使おうとすると、ビルドの際にエラーが出るようになりました。
https://groups.google.com/forum/#!topic/play-framework/aEglzIVCnH8
https://groups.google.com/forum/#!msg/play-framework/azlPQ14XJ2I/tdOKUkYVAxAJ
build.sbtにavaje-ebeanorm-apiを追記してみる
調べてみると、どうやらavaje-ebeanorm-api is not in the list of SBT dependenciesということだそうで、EBeanの依存関係のバグでMaven Repositoryで自動取得してくれないようなので、build.sbtに以下を追記するようなので追記してみることにしました。
"org.avaje.ebeanorm" % "avaje-ebeanorm-api" % "3.1.1"
https://groups.google.com/forum/#!topic/play-framework/aEglzIVCnH8
https://groups.google.com/forum/#!msg/play-framework/azlPQ14XJ2I/tdOKUkYVAxAJ
build.sbtの追記をやっぱり辞める
再度ビルドすると今度は新たなエラーがhttp://stackoverflow.com/questions/20520456/java-lang-nosuchmethoderror-is-chasing-me-at-cloudbeesException in thread "main" java.lang.NoSuchMethodError: com.avaje.ebean.config.AutofetchConfig.isGarbageCollectionOnShutdown()Z
を見ると、
isGarbageCollectionOnShutdown
メソッドはEBean の2.6.0系には存在しないメソッドで、3.2.2で存在しているメソッドだそうです。
また、
avaje-ebeanorm-apiのバージョンが混在しているのがいけないっぽい。
改めて
http://cs.hatenablog.jp/entry/2013/12/15/234618
を見てみると、
isGarbageCollectionOnShutdown
メソッドはEBean の2.6.0系には存在しないメソッドで、3.2.2で存在しているメソッドだそうです。
また、
Looks like conflicting version of same jar in classpathとあるように、そもそもPlay Framework 2.2系で使用しているEBeanのバージョンと
avaje-ebeanorm-apiのバージョンが混在しているのがいけないっぽい。
改めて
http://cs.hatenablog.jp/entry/2013/12/15/234618
を見てみると、
2.2ではEBeanが3.2.2になっています。
とあるので、できればavaje-ebeanorm-apiも3.2.2系にできればいいんだが、
http://mvnrepository.com/artifact/org.avaje.ebeanorm/avaje-ebeanorm-api
だと、3.1.1しかリリースされてない。。。
さらにGithubを見ると、
https://github.com/ebean-orm
のリポジトリ、
deprecated-avaje-ebeanorm-api
になってる・・・。
ということで、
2.2系では
http://mvnrepository.com/artifact/org.avaje.ebeanorm/avaje-ebeanorm-api
だと、3.1.1しかリリースされてない。。。
さらにGithubを見ると、
https://github.com/ebean-orm
のリポジトリ、
deprecated-avaje-ebeanorm-api
になってる・・・。
ということで、
2.2系では
import javax.validation.constraints.NotNull;にするという結論になりました。以上。
0 件のコメント:
コメントを投稿