有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jboss LinkageError:加载程序约束冲突:解析重写的方法时

我有两个war文件:A和B,其中包含使用CXF的web服务

A在B中使用web服务

B在A中使用web服务

Tomcat的一切都很好。但当我在Jboss中部署时,我面临着链接错误

Caused by: java.lang.LinkageError: loader constraint violation: when resolving overridden method "org.apache.cxf.jaxws.ServiceImpl.createDispatch(Ljavax/xml/ws/EndpointReference;Ljavax/xml/bind/JAXBContext;Ljavax/xml/ws/Service$Mode;[Ljavax/xml/ws/WebServiceFeature;)Ljavax/xml/ws/Dispatch;" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the current class, org/apache/cxf/jaxws/ServiceImpl, and its superclass loader (instance of ), have different Class objects for the type javax/xml/bind/JAXBContext used in the signature

我已经删除了jaxb-api-2.2.3。jar和jaxb-impl-2.2.4-1。jar从战争中解放出来并经过测试。我仍然面临着同样的问题

原因是什么?提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    根据您使用的JBoss版本的不同,它会附带一个jaxb jars版本。检查JBOSS_HOME/modules/system/layers/base文件夹

    如果您想让JBoss忽略它拥有的JAR并使用您的应用程序,那么您需要明确地告诉它这样做。这可以使用自定义模块完成:

    1. 在JBOSS_HOME/modules/system/layers/base/<folder_name>/main/中创建一个文件夹,并将JAR放入其中
    2. 创建一个模块。xml文件,并将所有jar名称列为<resource-root>
    3. 创建jboss部署结构。xml文件,并在此处列出此自定义模块

    有关详细信息,请查看此链接: https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7