2015-07-20 97 views
0

如果Akka序列化失敗,我們應該怎麼做,因爲它找不到混合的特徵之一?Akka的序列化錯誤

該消息使用案例類TestResult(config: TestConfiguration)構造。但是,由於TestConfiguration是使用SORM從數據庫中提取的,因此實際類型爲TestConfiguration with Persisted,因此是錯誤。

我試着用mixoutPersisted混合出來,但它不起作用。 也許這是因爲TestConfiguration在其領域內含有其他Entity,但是我不知道mixoutPersisted是否已經可以應對。

這裏

[ERROR] [07/20/2015 12:19:25.834] [hipci-akka.remote.default-remote-dispatcher-5] [akka.tcp://[email protected]:57052/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fhipci%40127.0.0.1%3A2552-0/endpointWriter] AssociationError [akka.tcp://[email protected]:57052] -> [akka.tcp://[email protected]:2552]: Error [__wrapper$1$a8720f07eaff412d8409f3359d68f6d1.__wrapper$1$a8720f07eaff412d8409f3359d68f6d1$PersistedAnonymous1$1] [ 
java.lang.ClassNotFoundException: __wrapper$1$a8720f07eaff412d8409f3359d68f6d1.__wrapper$1$a8720f07eaff412d8409f3359d68f6d1$PersistedAnonymous1$1 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:274) 
    at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:625) 
    at akka.util.ClassLoaderObjectInputStream.resolveClass(ClassLoaderObjectInputStream.scala:19) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
    at akka.serialization.JavaSerializer$$anonfun$1.apply(Serializer.scala:136) 
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58) 
    at akka.serialization.JavaSerializer.fromBinary(Serializer.scala:136) 
    at akka.serialization.Serialization$$anonfun$deserialize$1.apply(Serialization.scala:104) 
    at scala.util.Try$.apply(Try.scala:192) 
    at akka.serialization.Serialization.deserialize(Serialization.scala:98) 
    at akka.remote.MessageSerializer$.deserialize(MessageSerializer.scala:23) 
    at akka.remote.DefaultMessageDispatcher.payload$lzycompute$1(Endpoint.scala:58) 
    at akka.remote.DefaultMessageDispatcher.payload$1(Endpoint.scala:58) 
    at akka.remote.DefaultMessageDispatcher.dispatch(Endpoint.scala:76) 
    at akka.remote.EndpointReader$$anonfun$receive$2.applyOrElse(Endpoint.scala:929) 
    at akka.actor.Actor$class.aroundReceive(Actor.scala:467) 
    at akka.remote.EndpointActor.aroundReceive(Endpoint.scala:405) 
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) 
    at akka.actor.ActorCell.invoke(ActorCell.scala:487) 
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) 
    at akka.dispatch.Mailbox.run(Mailbox.scala:220) 
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) 
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 
] 

使用阿卡2.3.12和0.3.18 SORM

回答

0

這看起來像在兩臺機器的JAR文件完整的堆棧跟蹤是不一樣的。 Java序列化只發送對象的屬性,而不是代碼,所以如果在一側找不到類,通常意味着接收端的CLASSPATH內容與發送端的內容不匹配。