当前位置: 首页 > 知识库问答 >
问题:

ear中的jar不引用Wildfly8.1中其他打包jar中的类

贡念
2023-03-14

我是Wildfly的新手,希望将当前的JBoss5.1服务器升级到Wildfly8.1。我有一个应用程序,它包含一个war和许多JAR,这些JAR位于该war的类路径上。这个ear部署在JBoss5.1上没有问题,但在Wildfly8.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]

该应用程序使用Castor1.3.3,在war的类路径上包括: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

我从Wildfly中了解到,类加载已经发生了变化。有一节标题为“EAR类加载”。

不过,这个ear中唯一的子部署是warfile.war。其他的不会显示为子部署,除非我把文档解释错了。它声明WAR和EJB JAR是子部署,我没有EJB JAR。

无论如何,我尝试通过在EAR的METAINF目录中创建一个jboss-deployments-structure.xml文件来显式地将ear-subdeployments-electional设置为false。什么也没做。

我还显式地修改了castor-1.3.3-xml.jar的清单文件,使其依赖于castor-1.3.3-core.xml,但这造成了其他混乱。这导致所有其他JAR都缺少对其他JAR的依赖...我想如果您显式地声明对一个jar的依赖,那么您必须对所有jar都这么做?

任何帮助都是非常感谢的。想让这个应用程序运行在这个新的服务器上。谢了!

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个答案

蒙化
2023-03-14

您必须将非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
 类似资料:
  • 问题内容: 我运行以下命令: MyException在dependency.jar中。我也尝试用-classpath替换-cp。我做错了什么? 问题答案: 如果使用,则将忽略这些选项。如果在类路径上需要额外的jar文件,则应在清单中指定以下内容: (然后,您可以使用来运行程序。)

  • 我正在尝试制作一个.jar文件(这是我第一次),我很困惑。我了解如何使用命令提示符创建一个简单的jar文件,但对于我的程序,我导入了JavaMail API和我创建的另一个库(名为ArrayLibrary,其中填充了排序方法)。我如何在一个jar文件中创建这些?

  • 我正在开发一个SpringBoot应用程序(例如MyApp),它依赖于两个具有不同实现的数据项目: data-jdbc.jar 使用构建,它公开我的应用程序将使用的JDBCDataService类 示例代码: null null null 示例存储库: 在我的SpringBoot项目中,我有以下SpringBoot主应用程序: 在我的业务服务类中,我有以下注入 我现在已经找到了解决问题的办法。为了

  • 问题内容: 我有一个使用外部jar的应用程序。我使用了eclipse,效果很好。我从eclipse导出为jar,创建了一个清单文件,该文件具有Class- Path:./cab.v1.jar,我将两个jar都放在了同一目录中。我在命令行中运行:java -jar myApp.jar 并为cab.v1.jar(另一个jar)中的类获取 java.lang.NoClassDefFoundError 也

  • 好的,这是我们得到的: 我们有两个库包,我们已经将它们编译成JAR。 我们用 而且 给我们装进罐子里。 现在我们想将这两个罐子包含到另一个Java项目中。 所以我们有 /project/src/a_pack/helloworld. /project/libs/starwars.jar /project/libs/barwars.jar /project/manifest.txt MANIFEST.

  • 我正在尝试开发一个游戏插件(oldschool runescape)。我正在尝试加入组织。json,以便更容易读取/写入游戏状态和内容,但似乎不知道如何将其发送到package org。json和我的插件。它可以很好地编译,但不能与该包一起运行。有什么帮助吗? 这就是我的插件。格雷德尔。kts看起来像 编辑:我尝试了compileOnly、implementation、testImplementa

  • 问题内容: 是否可以指定一个Java ,其中包含另一个JAR文件中包含的JAR文件? 问题答案: 如果您试图创建一个包含应用程序及其所需库的jar,则有两种方法(我知道)。第一个是One-Jar,它使用特殊的类加载器来允许jar的嵌套。第二个是UberJar(或Shade),它会爆炸包含的库并将所有类放在顶级jar中。 我还应该提到UberJar和Shade分别是Maven1和Maven2的插件。