JBoss AS 7.1.1.Final:java.lang.ClassNotFoundException:javax.xml.bind.annotation.adapters.HexBinaryAd
Posted
技术标签:
【中文标题】JBoss AS 7.1.1.Final:java.lang.ClassNotFoundException:javax.xml.bind.annotation.adapters.HexBinaryAdapter【英文标题】:JBoss AS 7.1.1.Final : java.lang.ClassNotFoundException: javax.xml.bind.annotation.adapters.HexBinaryAdapter 【发布时间】:2012-08-28 23:30:35 【问题描述】:我正在迁移到 JBoss AS 7.1.1.Final,但我遇到了一个问题。 一切都适用于 7.1.0.CR1b 但现在我在 OSGi 组件中出现此错误:
14:17:51,888 错误 [stderr] (http--127.0.0.1-8080-1) 原因: java.lang.ClassNotFoundException: javax.xml.bind.annotation.adapters.HexBinaryAdapter 来自 [模块 来自服务模块加载器的“deployment.mymodule”] 14:17:51,890 错误 [stderr] (http--127.0.0.1-8080-1) 在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) 14:17:51,892 错误 [stderr] (http--127.0.0.1-8080-1) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) 14:17:51,893 错误 [stderr] (http--127.0.0.1-8080-1) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) 14:17:51,895 错误 [stderr] (http--127.0.0.1-8080-1) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423) 14:17:51,896 错误 [stderr] (http--127.0.0.1-8080-1) 在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) 14:17:51,897 错误 [stderr] (http--127.0.0.1-8080-1) 在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) 14:17:51,899 错误 [stderr] (http--127.0.0.1-8080-1) ... 213 更多
在 Felix Web 控制台中,一切似乎都很好:
mymodule :
Imported Packages
[...]
javax.xml.bind.annotation.adapters,version=0.0.0 from system.bundle(0)
[...]
和
0 - system.bundle
Exported Packages
[...]
javax.xml.bind.annotation.adapters,version=0.0.0
[...]
所有捆绑包都处于活动状态。
standalone.xml 文件与 jboss:domain:osgi 子系统配置不同: 7.1.0.CR1b:
<capabilities>
<capability name="javax.api"/>
<capability name="javax.servlet.api"/>
<capability name="javax.transaction.api"/>
<capability name="org.apache.aries.util"/>
<capability name="org.jboss.osgi.webconsole"/>
<capability name="org.osgi.compendium"/>
<capability name="javax.xml.bind.api"/>
[...]
7.1.1.决赛:
<capabilities>
<capability name="javax.servlet.api:v25"/>
<capability name="javax.transaction.api"/>
<capability name="org.apache.felix.log" startlevel="1"/>
<capability name="org.jboss.osgi.logging" startlevel="1"/>
<capability name="org.apache.felix.configadmin" startlevel="1"/>
<capability name="org.jboss.as.osgi.configadmin" startlevel="1"/>
有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:自 JBoss 7.1.0.Final(我猜)以来,一些包似乎由 system.bundle 导出,并由应用程序包正确导入。但不是!!
javax.xml.bind api 就是这种情况。
解决方法是通过将 org.jboss.osgi.system.modules.extra 属性添加到 osgi 子系统来修改系统包中包含的模块
<subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="eager">
<properties>
<property name="org.jboss.osgi.system.modules.extra">
javax.xml.bind.api
</property>
</properties>
[...]
感谢 Alexander 和 Rico https://community.jboss.org/message/721852
【讨论】:
以上是关于JBoss AS 7.1.1.Final:java.lang.ClassNotFoundException:javax.xml.bind.annotation.adapters.HexBinaryAd的主要内容,如果未能解决你的问题,请参考以下文章