Play Framework:无法在 Ebean 服务器中注册 class

Play Framework: cannot register class in Ebean server

我正在尝试从 java 6 升级到 7。在 Java 6 中一切正常。 但是当我使用Java 7时,播放出现以下错误

Cannot register class [models.ActivityMetrics] in Ebean server
In conf/dev.conf at line 43.
41
42 evolutionplugin=disabled
43 ebean.default = "models.*" <<<<<<<<<<<<<<<<<<<<<
44

是maven项目。它构建成功,但在 运行 时出现上述错误。

我正在使用 play 2.2.0。

我曾尝试使用 clean, compile, play 推荐的命令序列来回答过去的类似问题,但没有帮助。

使用 Java 7 而不是 Java 6 时,对模型的要求是否会发生变化?关于我应该改变什么的任何建议。

更新:

在日志文件中找到以下堆栈跟踪。

play.api.Configuration$$anon: Configuration error[Cannot register class [models.ActivityMetrics] in Ebean server]
    at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:92) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.api.Configuration.reportError(Configuration.scala:570) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.Configuration.reportError(Configuration.java:307) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:71) ~[play-java-ebean_2.10-2.2.6.jar:2.2.6]
    at play.api.Play$$anonfun$start$$anonfun$apply$mcV$sp.apply(Play.scala:88) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.api.Play$$anonfun$start$$anonfun$apply$mcV$sp.apply(Play.scala:88) ~[play_2.10-2.2.6.jar:2.2.6]
    at scala.collection.immutable.List.foreach(List.scala:318) ~[scala-library-2.10.2.jar:na]
    at play.api.Play$$anonfun$start.apply$mcV$sp(Play.scala:88) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.api.Play$$anonfun$start.apply(Play.scala:88) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.api.Play$$anonfun$start.apply(Play.scala:88) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.api.Play$.start(Play.scala:87) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.core.ReloadableApplication$$anonfun$get$$anonfun$apply$$anonfun.apply(ApplicationProvider.scala:139) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.core.ReloadableApplication$$anonfun$get$$anonfun$apply$$anonfun.apply(ApplicationProvider.scala:112) ~[play_2.10-2.2.6.jar:2.2.6]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.10.2.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$$anonfun$apply.apply(ApplicationProvider.scala:112) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.core.ReloadableApplication$$anonfun$get$$anonfun$apply.apply(ApplicationProvider.scala:110) ~[play_2.10-2.2.6.jar:2.2.6]
    at scala.util.Success.flatMap(Try.scala:200) ~[scala-library-2.10.2.jar:na]
    at play.core.ReloadableApplication$$anonfun$get.apply(ApplicationProvider.scala:110) ~[play_2.10-2.2.6.jar:2.2.6]
    at play.core.ReloadableApplication$$anonfun$get.apply(ApplicationProvider.scala:102) ~[play_2.10-2.2.6.jar:2.2.6]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1(Future.scala:24) ~[scala-library-2.10.2.jar:na]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library-2.10.2.jar:na]
    at scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361) ~[scala-library-2.10.2.jar:na]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) ~[scala-library-2.10.2.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) ~[scala-library-2.10.2.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) ~[scala-library-2.10.2.jar:na]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) ~[scala-library-2.10.2.jar:na]
Caused by: java.lang.VerifyError: Stack map does not match the one at exception handler 188
Exception Details:
  Location:
    models/ActivityMetrics.delete()V @188: astore_2
  Reason:
    Type 'models/Activity' (current frame, locals[5]) is not assignable to 'java/lang/String' (stack map, locals[5])
  Current Frame:
    bci: @117
    flags: { }
    locals: { 'models/ActivityMetrics', 'java/lang/String', 'java/util/ArrayList', top, 'models/ActivityMetrics', 'models/Activity' }
    stack: { 'java/lang/Exception' }
  Stackmap Frame:
    bci: @188
    flags: { }
    locals: { 'models/ActivityMetrics', 'java/lang/String', top, top, 'java/lang/Object', 'java/lang/String' }
    stack: { 'java/lang/Exception' }
  Bytecode:
    0000000: bb00 3459 b700 3513 0107 b600 372a 3a04
    0000010: 013a 0519 04b6 03c4 3a05 1905 3a04 013a
    0000020: 0519 04b6 03de 3a05 1905 b600 3713 0108
    0000030: b600 37b6 0039 4cb2 0015 2bb6 0017 b200
    0000040: 152a 3a04 013a 0519 04b6 03c4 3a05 1905
    0000050: 3a04 013a 0519 04b6 03e0 3a05 1905 b600
    0000060: 17bb 002f 59b7 0030 4d2c 2a3a 0401 3a05
    0000070: 1904 b603 c43a 0519 053a 0401 3a05 1904
    0000080: b603 e03a 0519 05b9 0091 0200 57b8 000a
    0000090: 4e2a 57b2 000e 2d3a 0401 3a05 1904 b603
    00000a0: bf3a 0519 053a 0401 3a05 1904 b603 c23a
    00000b0: 0519 052b 2cb6 00fb 57a7 0016 4db2 0015
    00000c0: 1301 09b6 0017 bb01 0a59 2cb7 010b bfb1
    00000d0:
  Exception Handler Table:
    bci [97, 185] => handler: 188
  Stackmap Table:
    full_frame(@188,{Object[#373],Object[#410],Top,Top,Object[#376],Object[#410]},{Object[#414]})
    full_frame(@207,{Object[#373],Object[#410],Object[#408],Object[#407],Object[#536],Object[#410]},{})

    at java.lang.Class.forName0(Native Method) ~[na:1.7.0_79]
    at java.lang.Class.forName(Class.java:274) ~[na:1.7.0_79]
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:69) ~[play-java-ebean_2.10-2.2.6.jar:2.2.6]
    ... 23 common frames omitted

使用 getter 而不是直接访问字段后错误消失了 以下更改有效。

讨论帖 https://groups.google.com/forum/#!topic/play-framework/eWFwZ75T6wk 帮助找到了答案。

     public void delete() throws Exception {
-        String query = "DELETE FROM " + this.activity.merchant + "_activity_metrics WHERE uuid = ?";
+        String merchant = this.getActivity().getMerchant();
+        String query = "DELETE FROM " + merchant + "_activity_metrics WHERE uuid = ?";
         System.out.println(query);
-        System.out.println(this.activity.uuid);
+        System.out.println(this.getActivity().getUuid());