読者です 読者をやめる 読者になる 読者になる

Play! framework 2.1.1(Java) + EbeanのモデルのJUnitがEclipseから実行できない場合の対処方法

  • Eclipse4.2
  • Play! framework 2.1.1(Java)

EclipseJUnitを実行したら以下のエラーが出た。

c.a.e.s.d.BeanDescriptorManager - Error in deployment
javax.persistence.PersistenceException: Error with [models.User] It has not been enhanced but it's superClass [class play.db.ebean.Model] is? (You are not allowed to mix enhancement in a single inheritance hierarchy) marker[play.db.ebean.Model] className[models.User]
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1462) ~[avaje-ebeanorm-server.jar:na]
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1138) ~[avaje-ebeanorm-server.jar:na]
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1058) ~[avaje-ebeanorm-server.jar:na]
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentAssociations(BeanDescriptorManager.java:565) ~[avaje-ebeanorm-server.jar:na]
	at com.avaje.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:252) ~[avaje-ebeanorm-server.jar:na]
	at com.avaje.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:124) [avaje-ebeanorm-server.jar:na]

Play Consoleからの実行は可能。

test-only models.UserTest
[info] Compiling 2 Java sources to /Users/tenten0213/Project/workspace/backbone-activity-play/target/scala-2.10/classes...
[warn] Picked up JAVA_TOOL_OPTIONS: -Dsun.jnu.encoding=UTF-8
[info] Compiling 3 Java sources to /Users/tenten0213/Project/workspace/backbone-activity-play/target/scala-2.10/test-classes...
[warn] Picked up JAVA_TOOL_OPTIONS: -Dsun.jnu.encoding=UTF-8
Picked up JAVA_TOOL_OPTIONS: -Dsun.jnu.encoding=UTF-8
1
[info] models.UserTest
[info] + models.UserTest.createAndDelete
[info] 
[info] 
[info] Total for test models.UserTest
[info] Finished in 0.012 seconds
[info] 1 tests, 0 failures, 0 errors
[info] Passed: : Total 1, Failed 0, Errors 0, Passed 1, Skipped 0
[success] Total time: 6 s, completed 2013/07/18 22:19:40

どうやらIDEで実行する時だけ出る模様。テスト実行時のコンパイルがおかしいみたい。

対処方法

IntelliJ IDEAの場合

以下のプラグインを入れれば解決する模様。

Eclipseの場合

IntelliJのようなプラグインは無いので、VM引数にjavaagentコンパイルオプションを指定する。

-javaagent:/path/avaje-ebeanorm-agent.jar

JUnit実行時のVM引数に毎回設定するのが面倒なので、Java - Install JREs の利用しているJREの設定で、 Default VM argumentsに設定してる。


最近、別のフレームワークで書いたアプリをplayで書き直してる。
サクサクいけるだろうと思ってたけど、ちょくちょくハマったりするし甘くないですね…
これ終わったらPlay Scalaでやるか、Compojureでやるかなー。