JBoss:EAR中的WAR文件在类路径上找不到JAR库
我在JBoss 4.3-eap上使用捆绑的战争,jar和配置文件(.properties文件)部署耳朵时遇到问题。 这是我的耳结构:
+app.ear +lib *.jar libraries that the war's use +classes *.properties and other configuration files +META-INF application.xml jbos-app.xml app.war app2.war appn.war
我的jboss-app.xml中有以下内容:
app.startup.JbossStartUpServer:service=JbossStartUpService
我的application.xml看起来像这样:
App>/display-name> TheApp>/description> <!-- lib/core.jar lib/tag.jar --> app.war / app2.war /app2 appn.war /appn users users lib
基本上,在部署耳朵时,我遇到了一个问题,其中我的一场战争无法在core.jar
文件中找到一个类( java.lang.NoClassDefFoundErro
r)。 我认为这是因为战争没有找到这个库,即使它在lib
文件夹/类路径中。 如果我尝试取消注释前两个模块以添加第一方库( core.jar
和tag.jar
),则突然无法再找到属性文件(目前它们位于lib/classes
,因此,我希望无论如何,它们都被类加载器拾取。理想情况下,我想将类放在它自己的目录中,并将它分别添加到类路径中,但是现在我只是想让它工作)。
我已经尝试了一些其他的东西,包括手动将core.jar
添加到war的manifest.mf
文件中,在jboss-web.deployer
下的jboss-web.deployer
jboss-service.xml
文件UseJBossWebLoader
更改为true,以及上面的各种组合,为no成功。 我要么丢失classpath( lib
文件夹)中的classes
目录,要么没有拾取我的属性文件,或者war无法从jar访问正确的类。 我认为必须有一些错误的配置,虽然我已经尝试过阅读JBoss进行EAR部署和类加载的方式,但我似乎无法将其改编为我当前的设置。
任何建议将不胜感激。
以下是我一直关注的一些网站:
Raible设计JBoss ClassLoader逻辑
这些只是我看过的几个网站。 问题可能源于项目的设置,因为这是一个大型已建立的项目(在某种程度上)从weblogic部署迁移到Jboss。 因此,如果有什么应该工作,但没有,那么它可能是某些代码/项目配置的问题。 不幸的是,我现在还不知道它是否与JBoss相关的问题,或项目的问题。
application.xml
的
标签是JavaEE5的一个特性,我不认为JBoss 4.3完全符合JavaEE5(它可以做EJB3,是的,但它只是部分支持)。
所以你需要回到使用显式声明的JAR文件:
lib/core.jar
至于属性文件,需要添加它们作为java模块的目录,因此对于您的示例:
lib/classes