[英]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.