-->

JBoss的:在EAR WAR文件找不到类路径JAR库(JBoss: WAR file in EAR

2019-07-03 16:28发布

我有部署捆绑战争罐,并在JBoss 4.3 EAP的配置文件(.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中的以下内容:

<jboss-app>
  <jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name>
</jboss-app>    

我的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>

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

我曾尝试一些其他的东西,包括手动添加core.jar到战争的manifest.mf文件,改变UseJBossWebLoader在为true jboss-service.xml下文件jboss-web.deployer ,以及上述的各种组合,没有成功。 我要么失去classes的类路径(目录lib文件夹)和无我的属性文件得到回升,或战争不能从罐访问适当的类。 我认为必须有一些配置是错误的,虽然我已经试过JBoss上不EAR部署和类加载的方式读了,我似乎无法使它适应我的当前设置。

任何建议将不胜感激。

这里有一些网站,我一直在寻找:
Raible设计JBoss的类加载器逻辑

这些仅仅是一些我看过的所有网站。 该问题可能从项目的设置干为好,因为这是从WebLogic部署到JBoss正在迁移一个大的既定的项目是(在一定程度上)。 所以,如果有什么事情,应该工作,但是没有,这可能与某些代码/项目配置的问题。 不幸的是,我不是在点但这里我可以告诉大家,如果其一个JBoss相关的问题,或与该项目有问题。

Answer 1:

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

所以,你需要重新使用显式声明的JAR文件:

<module>
    <java>lib/core.jar</java>
</module>

至于你的属性文件,你需要添加它们是作为一个Java模块,该目录中,以便为您的例子:

<module>
    <java>lib/classes</java>
</module>


文章来源: JBoss: WAR file in EAR can't find JAR library on classpath