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的主要内容,如果未能解决你的问题,请参考以下文章

远程客户端访问部署在 JBOSS AS 中的 EJB 的 JNDI 循环(7.1.1 最终版)

JBoss 7 配置成windows启动服务

jboss7.1部署安装

window下JBoss7 安装部署

Jboss7安装和使用

jboss 7.1.1 Final 的jsp热部署解决方案