2017-01-23 54 views
0

我試圖從Java 6升級到7,一切都在的Java 6工作正常 但是當我使用的Java 7,播放提供了以下錯誤遊戲框架:在Ebean服務器不能註冊類

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$1: 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$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:88) ~[play_2.10-2.2.6.jar:2.2.6] 
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.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$1.apply$mcV$sp(Play.scala:88) ~[play_2.10-2.2.6.jar:2.2.6] 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:88) ~[play_2.10-2.2.6.jar:2.2.6] 
    at play.api.Play$$anonfun$start$1.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$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:139) ~[play_2.10-2.2.6.jar:2.2.6] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.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$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10-2.2.6.jar:2.2.6] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.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$1.apply(ApplicationProvider.scala:110) ~[play_2.10-2.2.6.jar:2.2.6] 
    at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:102) ~[play_2.10-2.2.6.jar:2.2.6] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(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 

回答

0

使用getters而不是直接訪問字段後錯誤消失 下面的更改工作。

主題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());