耳中的罐子不会引用Wildfly 8.1中其他包装罐中的类

时间:2014-10-09 21:53:11

标签: dependencies wildfly wildfly-8

我是Wildfly的新手,想要将我们当前的JBoss 5.1服务器升级到Wildfly 8.1。我有一个包含1个战争和许多罐子的应用程序,它们位于该战争的类路径上。这个耳朵在JBoss 5.1上部署没有问题,但在Wildfly 8.1上我得到了LinkageErrors。

2014-10-09 16:08:12,425 WARN  [org.jboss.modules] (MSC service thread 1-16) Failed to define class org.castor.xml.XMLProperties in Module "deployment.iffc.ear.castor-1.3.3-xml.jar:main" from Service Module Loader: java.lang.LinkageError: Failed to link org/castor/xml/XMLProperties (Module "deployment.iffc.ear.castor-1.3.3-xml.jar:main" from Service Module Loader)
...
Caused by: java.lang.ClassNotFoundException: org.castor.core.util.AbstractProperties from [Module "deployment.iffc.ear.castor-1.3.3-xml.jar:main" from Service Module Loader]

应用程序使用castor 1.3.3,并且在战争的类路径中包括:castor-1.3.3-core.jar和castor-1.3.3-xml.jar。

耳朵的目录结构如下:

ear
 |---METAINF
 |---castor-1.3.3-core.jar
 |---castor-1.3.3-xml.jar
 |---many other jars
 |---warFile.war

指向org.castor.core.util.AbstractProperties的ClassNotFoundException是DOES EXIST但在castor-1.3.3-core.jar中。为什么代码不会在核心jar文件而不是xml jar文件中查找?

我用Wildfly that the classloading has changed学到了。有一节标题为“EAR Class Loading”。

但是,这个耳中唯一的子部署就是warFile.war。除非我解释文档错误,否则其他人不会显示为子部署。它声明战争和EJB jar是子部署,我没有EJB jar。

在任何情况下,我都尝试通过在耳朵的METAINF目录中创建一个jboss-deployment-structure.xml文件,明确地将ear-subdeployments-isolated设置为false。那没有做任何事情。

我还明确修改了castor-1.3.3-xml.jar的清单文件,使其依赖于castor-1.3.3-core.xml,但这导致了另一个混乱。这导致所有其他罐子都缺少对其他罐子的依赖...我想如果你明确说明对一个罐子的依赖,你必须对所有罐子做这个吗?

非常感谢任何帮助。想在这台新服务器上运行此应用程序。谢谢!

更新
warFile.war在其MANIFEST.MF文件中定义了Class-Path,所有这些jar都位于耳根级别。

添加了war模块的类路径:

Class-Path: axis-1.3.jar castor-1.3.1-core.jar castor-1.3.1-xml.jar co
 mmons-jxpath-1.2.jar commons-lang-2.0.jar commons-logging.jar commons
 -pool-1.3.jar log4j-1.2.14.jar gson-2.2.4.jar activation.jar axiom-ap
 i.jar axiom-impl.jar axis2-adb.jar axis2-kernel.jar backport-util-con
 current.jar commons-codec.jar commons-discovery.jar commons-fileuploa
 d.jar commons-httpclient.jar commons-io.jar geronimo-strax-api_1.0_sp
 ec.jar neethi.jar qxpsm-webservicestubs-10.1.jar wsdl4j.jar wstx-asl.
 jar XmlSchema.jar

1 个答案:

答案 0 :(得分:1)

您必须将非ejb或war模块放入ear文件中的lib文件夹

ear
 |---lib
 |     |---castor-1.3.3-core.jar
 |     |---castor-1.3.3-xml.jar
 |     |---non ejb jars
 |
 |-- warFile.war
 |-- ejbFile.jar