我刚刚将服务器从JBoss AS 7.1升级到Wildfly 8.经过大量的迁移工作后,一切正常,除了docx4j . 我总是得到以下例外 . 有没有人有想法?
Failed to define class org.docx4j.jaxb.NamespacePrefixMapperSunInternal in Module "deployment.ProfilerApp.ear:main" from Service Module Loader: java.lang.LinkageError: Failed to link org/docx4j/jaxb/NamespacePrefixMapperSunInternal (Module "deployment.myapp.ear:main" from Service Module Loader)
Caused by: java.lang.NoClassDefFoundError: com/sun/xml/internal/bind/marshaller/NamespacePrefixMapper
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_55]
at java.lang.ClassLoader.defineClass(ClassLoader.java:800) [rt.jar:1.7.0_55]
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:345) [jboss-modules.jar:1.3.0.Final]
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:423) [jboss-modules.jar:1.3.0.Final]
... 225 more
引起:java.lang.ClassNotFoundException:com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper来自org.jboss.modules.ModuleClassLoader.findClass中的[Module“deployment.myapp.ear:main”来自Service Module Loader] ModuleClassLoader.java:197)[jboss-modules.jar:1.3.0.Final] org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443)[jboss-modules.jar:1.3.0.Final] at at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431)[jboss-modules.jar:1.3.0.Final] org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373)[jboss-modules .jar:1.3.0.Final] at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118)[jboss- modules.jar:1.3.0.Final] ... 229更多
2014-05-23 11:34:16,243 ERROR [org.jboss.as.ejb3](默认任务-5)javax.ejb.EJBTransactionRolledbackException:意外错误
我现在尝试过的:
-
将docx4j更新到最新版本 .
-
将com.sun.xml.bind定义为jboss-deployment-structure.xml中的依赖关系,用于Web和服务器包 .
-
将docx4j添加为Wildfly的模块,并将com.sun.xml.bind定义为依赖项 .
-
更改为Wildfly中旧版本的com.sun.xml.bind,它与我的jboss-as-7.1.1模块相同
-
在pom.xml中添加自己的JAXB RI(最新版本) .
但以上都不奏效 . 我仍然得到同样的错误 .
1 回答
在我自己绑定依赖项之后,问题就解决了: