繁体   English   中英

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

[英]jars in ear do not reference classes in other packaged jars in Wildfly 8.1

我是Wildfly的新手,想将当前的JBoss 5.1服务器升级到Wildfly 8.1。 我有一个应用程序,其中包含1次战争和该战争的类路径上的许多jar。 这只耳朵毫无问题地部署在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确实存在,但在castor-1.3.3-core.jar中。 为什么代码不在核心jar文件而不是xml jar文件中查找?

我通过Wildfly得知类加载已经改变 有一个标题为“ EAR Class Loading”的小节。

但是,此耳朵中唯一的子部署是warFile.war。 除非我误解文档,否则其他人不会显示为子部署。 它指出wars和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的依赖关系,但这导致了其他麻烦。 这导致所有其他jar都缺少对其他jar的依赖...我想,如果您明确声明对一个jar的依赖,那么您必须对所有jar都这样做吗?

任何帮助深表感谢。 希望此应用程序在此新服务器上运行。 谢谢!

更新:
warFile.war在其MANIFEST.MF文件中定义了类路径,所有这些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

您必须将非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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM