Java Play framework 1.4.2在使用模块预编译应用程序时引发ClassNotFoundException

Java Play framework 1.4.2在使用模块预编译应用程序时引发ClassNotFoundException,java,playframework,module,hazelcast,precompile,Java,Playframework,Module,Hazelcast,Precompile,我们有一个使用模块构建的应用程序,java版本是“1.8.0_91” 我的应用程序使用hazelcast分布式主题在节点之间进行消息交换。共有四个节点。当我使用源代码以正常模式启动应用程序时,一切正常,但如果我尝试在预编译模式下运行,它会抛出ClassNotFoundException,我无法理解play framework或hazelcast模块中问题的根源在哪里 播放hazelcast插件: dependencies.yml: # Application dependencies requ

我们有一个使用模块构建的应用程序,java版本是“1.8.0_91”

我的应用程序使用hazelcast分布式主题在节点之间进行消息交换。共有四个节点。当我使用源代码以正常模式启动应用程序时,一切正常,但如果我尝试在预编译模式下运行,它会抛出ClassNotFoundException,我无法理解play framework或hazelcast模块中问题的根源在哪里

播放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模块收到了一条消息,但它无法反序列化,因为找不到该类。

我不确定。我最近正在使用Play框架。但我知道ClassNotFoundException通常是由于错误的导入而引发的。尝试查看是否使用了正确的导入如果导入不正确,则precompile命令将在编译时引发错误。您使用的是哪种依赖关系管理?是maven吗?您是否检查了包含此库的范围(编译、测试、运行时)?我已更新了我的问题并添加了dependencies.yml。PlayFramework使用它自己的依赖关系管理机制,我猜它是基于Ivy的。