JBoss:EAR中的WAR文件在类路径上找不到JAR库

Mik*_*ike 14 java deployment classpath jboss-4.2.x

我在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  
Run Code Online (Sandbox Code Playgroud)

我在jboss-app.xml中有以下内容:

<jboss-app>
  <jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>    
Run Code Online (Sandbox Code Playgroud)

我的application.xml看起来像这样:

<application id="app_id">
  <display-name>App>/display-name>
  <description>TheApp>/description>
<!--  
  <module  id="core">
    <java>lib/core.jar</java>
  </module>

  <module id="tag">
    <java>lib/tag.jar</java>
  </module>
-->  
  <module id="app">
    <web>
      <web-uri>app.war</web-uri>
      <context-root>/</context-root>
    </web>
  </module> 

  <module id="app2">
    <web>
      <web-uri>app2.war</web-uri>
      <context-root>/app2</context-root>
    </web>
  </module> 

  <module id="appn">
    <web>
      <web-uri>appn.war</web-uri>
      <context-root>/appn</context-root>
    </web>
  </module>

  <security-role id="secRole">
    <description>users</description>
    <role-name id="appRoleName">users</role-name>
  </security-role>

  <library-directory>lib</library-directory>

</application>
Run Code Online (Sandbox Code Playgroud)

基本上,在部署耳朵时,我遇到了一个问题,其中我的一场战争无法在core.jar文件中找到一个类(java.lang.NoClassDefFoundError).我认为这是因为战争没有找到这个库,即使它在lib文件夹/类路径中.如果我试图取消对前两个模块添加第一方库(core.jartag.jar),一下子属性文件不能再被发现(它们的位置,就目前而言,中lib/classes,所以,我希望,无论如何,他们是由类加载器拾取.理想情况下,我想将类放在它自己的目录中,并将它分别添加到类路径中,但是现在我只是想让它工作).

我已经尝试了一些其他的东西,包括手动添加core.jar到war的manifest.mf文件,UseJBossWebLoader在下面的jboss-service.xml文件中更改为true jboss-web.deployer,以及上面的各种组合,但没有成功.我要么丢失了classes类路径(lib文件夹)中的目录,并且没有拾取任何属性文件,要么战争无法从jar访问正确的类.我认为必定有一些错误的配置,虽然我已经尝试过阅读JBoss进行EAR部署和类加载的方式,但我似乎无法将其改编为我当前的设置.

任何建议将不胜感激.

以下是我一直关注的一些网站:
Raible Designs JBoss ClassLoader Logic

这些只是我看过的几个网站.问题可能源于项目的设置,因为这是一个大型已建立的项目(在某种程度上)从weblogic部署迁移到Jboss.因此,如果有什么应该工作,但没有,那么它可能是某些代码/项目配置的问题.不幸的是,我现在还不知道它是否与JBoss相关的问题,或项目的问题.

ska*_*man 10

<library-directory>标签中application.xml是JavaEE5的功能,我不认为JBoss的4.3是完全JavaEE5兼容的(它可以做EJB3,是的,但它只是部分支持).

所以你需要回到使用显式声明的JAR文件:

<module>
    <java>lib/core.jar</java>
</module>
Run Code Online (Sandbox Code Playgroud)

至于属性文件,您需要添加它们作为java模块的目录,因此对于您的示例:

<module>
    <java>lib/classes</java>
</module>
Run Code Online (Sandbox Code Playgroud)