我们有一个使用playframework 1.4.2构建的应用程序并使用play-hazelcast模块,java版本是" 1.8.0_91"。
我的应用程序使用hazelcast分布式主题进行节点之间的消息交换。总共有四个节点。当我在正常模式下使用源启动应用程序时,一切正常,但如果我尝试在预编译模式下运行它会抛出ClassNotFoundException,我无法理解play框架或hazelcast模块中问题的根源在哪里?
play-hazelcast插件:
https://github.com/braman/hazelcast
dependencies.yml:
# Application dependencies
require:
- play
- hazelcast -> hazelcast latest.integration
- org.hibernate -> hibernate-search 4.3.0.Final
repositories:
- hazelcast:
type: local
artifact: ${application.path}/../hazelcast
contains:
- hazelcast -> *
以下是例外:
WARNING: [10.0.0.167]:5799 [prod] [3.7.1] Error while logging processing event
com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: pojo.system.events.StatusChangedEvent
at com.hazelcast.internal.serialization.impl.JavaDefaultSerializers$JavaSerializer.read(JavaDefaultSerializers.java:224)
at com.hazelcast.internal.serialization.impl.StreamSerializerAdapter.read(StreamSerializerAdapter.java:46)
at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toObject(AbstractSerializationService.java:172)
at com.hazelcast.topic.impl.DataAwareMessage.getMessageObject(DataAwareMessage.java:44)
at jobs.StartupJob$1.onMessage(StartupJob.java:72)
at com.hazelcast.topic.impl.TopicService.dispatchEvent(TopicService.java:134)
at com.hazelcast.spi.impl.eventservice.impl.EventProcessor.process(EventProcessor.java:48)
at com.hazelcast.spi.impl.eventservice.impl.RemoteEventProcessor.run(RemoteEventProcessor.java:36)
at com.hazelcast.util.executor.StripedExecutor$Worker.process(StripedExecutor.java:187)
at com.hazelcast.util.executor.StripedExecutor$Worker.run(StripedExecutor.java:171)
Caused by: java.lang.ClassNotFoundException: pojo.system.events.StatusChangedEvent
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.hazelcast.nio.ClassLoaderUtil.tryLoadClass(ClassLoaderUtil.java:151)
at com.hazelcast.nio.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:120)
at com.hazelcast.nio.IOUtil$ClassLoaderAwareObjectInputStream.resolveClass(IOUtil.java:358)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at com.hazelcast.internal.serialization.impl.JavaDefaultSerializers$JavaSerializer.read(JavaDefaultSerializers.java:219)
... 9 more
此异常表示我的hazelcast模块收到了一条消息,但由于找不到该类,因此无法对其进行反序列化。