我做了一个看起来像这样的小项目
游戏老板.ear 库 commonlib.jar JsonDeserializer.class 测试库.jar JsonMessage.class 版本.class 杰克逊-1.9.4.jar playboss_ejb.jar MessageTimer.class
JsonMessage 有一个成员:*private Class msgVersion = Version.V0.class;
MessageTimer 只是一个带有超时的 Bean,它什么都不做,只是使用 JsonDeserializer 反序列化 JsonMessage 的示例字符串。一切正常,即字符串被转换为 JsonMessage!
现在,我向我的项目添加了一个依赖项,其中包含一个 JAX-RS API 和模型对象,以便扩展 lib。
库 SomeAPI.jar javax.ws.rs-api-2.0.jar
现在,当我启动 JBoss EAP 6.4 时,我得到以下异常:
引起:java.lang.ClassNotFoundException: playground.testlib.Version$V0 from [Module "org.codehaus.jackson.jackson-mapper-asl:main" from local module loader @9e89d68 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.7.Final-redhat-1] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.7.Final-redhat-1] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.7.Final-redhat-1] 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.7.Final-redhat-1] 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.7.Final-redhat-1] 在 java.lang.Class.forName0(本机方法)[rt.jar:1.8.0_66] 在 java.lang.Class.forName(Class.java:264) [rt.jar:1.8.0_66] 在 org.codehaus.jackson.map.deser.std.ClassDeserializer.deserialize(ClassDeserializer.java:42) [jackson-mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4]
我认为由于https://docs.jboss.org/author/display/AS7/Implicit+module+dependencies+for+deployments触发了 jax-rs 模块依赖并从模块加载了 jackson。
我的问题:
1)什么是让我的反序列化再次工作的推荐/最佳方法
2)如果模块类加载器显然看不到我的模型类,我想了解如何使用 jax-rs 完成对象映射。