与Apache CXF(JAXBAttachmentMarchaller)和JBOSS 5.2的链接错误

时间:2015-05-07 14:50:01

标签: java maven jboss cxf linkageerror

我有一个Linkage错误,似乎Jboss(5.2)提供了类produnit的一个版本,而我在某处提供了该类的另一个实现。我已经搜索了这个类,它是包含它的maven项目org.apache.cxf.jaxb.attachment.JAXBAttachmentMarchaller,因此我从使用Apache CXF的依赖项中排除了该项目,但错误仍然存​​在。

我真的不理解错误信息,尤其是部分 ...对于shaller.addMtomAttachment类型有不同的Class对象(Ljavax / activation / DataHandler; Ljava / lang / String; Ljava / lang / String;)Ljava / lang / String;

  • 什么是 shaller ?如何调用变量的方法?
  • 如何找到负责将cxf-rt-databinding-jaxb打包到项目中的依赖项?

如果此问题有另一种解决办法,请纠正我。

JAXBAttachmentMarchaller

1 个答案:

答案 0 :(得分:0)

  

如何找到负责将JAXBAttachmentMarchaller打包到项目中的依赖项?

在网络上搜索捆绑文件的maven项目。对我而言是cxf-rt-frontend-jaxws

您需要做的是从程序集中删除此依赖项,它不能包含在WAR / EAR文件中,因为JBoss提供了另一个版本的依赖项并且存在冲突。

pom.xml中查找cxf-rt-frontend-jaxws并确保其标记为<scope>provided</scope>,因为我们希望服务器提供依赖关系。如果您的cxf-rt-frontend-jaxws中没有pom.xml,则表示该项目是对您的某个依赖项的子依赖项。这很难解决,因为依赖关系可以存在于几个子依赖关系中。有些人建议使用mvn dependency:tree来查找哪些项目负责捆绑WAR / EAR文件中的依赖项。

我找到了负责任的项目,它是一个内部组件,因此我可以轻松地将<scope>provided</scope>添加到组件中以从WAR / EAR文件中删除cxf-rt-frontend-jaxws*jar。我验证了依赖项不再捆绑在WAR文件中,方法是将其解压缩并列出WEB-INF/lib不再列出的位置。

如果无法更改范围,则必须使用exclude-tag将其从装配中删除。