当前位置: 首页 > 面试题库 >

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

公良修竹
2023-03-14
问题内容

我在JBoss 4.3-eap上部署带有捆绑的war,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中包含以下内容:

<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.NoClassDefFoundError)中找到类。我认为这是由于战争没有找到该库,即使它在lib文件夹/
classpath中也是如此。如果我尝试取消注释前两个模块以添加第一方库(core.jartag.jar)的注释,突然之间将找不到属性文件(目前它们位于lib/classes,所以无论如何我希望它们是理想情况下,我想将类放在其自己的目录中,并将其分别添加到类路径中,但现在我只是想使此工作生效)。

我尝试了一些其他操作,包括手动添加core.jar到war的manifest.mf文件,UseJBossWebLoaderjboss- service.xml下方的文件中更改为true jboss- web.deployer以及上述各种组合,均未成功。我classes从类路径(lib文件夹)中丢失了目录,而我的任何属性文件都没有被拾取,或者战争无法从罐子中访问适当的类。我认为肯定有一些错误的配置,尽管我尝试阅读JBoss进行EAR部署和类加载的方式,但似乎无法使其适应当前的设置。

任何建议将不胜感激。

这是我一直在查看的一些站点:
Raible Designs JBoss ClassLoader
Logic

这些只是我浏览过的一些网站。问题也可能来自项目的设置,因为这是一个已建立的大型项目,在某种程度上,它已从Weblogic部署迁移到Jboss。因此,如果应该执行任何操作,但不能执行任何操作,则可能与某些代码/项目配置有关。不幸的是,我现在还无法判断这是与JBoss相关的问题,还是项目的问题。


问题答案:

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


 类似资料:
  • 问题内容: 我在Tomcat中部署了WAR文件。另外我还有一个JAR文件。 是否可以使JAR文件中的类可用于WAR文件中的服务而无需更改WAR文件,或者是否已将其添加到WAR的WEB-INF / lib中? 我尝试将JAR添加到中,但不起作用。启动时,Spring会出现org.springframework.beans.factory.BeanCreationException»java.lang

  • 在尝试学习如何使用storm时。我决定编译我自己的著名WordCount拓扑实例,看看它是如何实现的。代码与示例完全相同。(https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/org/apache/storm/starter/WordCountTopology.java) 然而,每当我尝试运行jar时

  • 我一直在努力让FindBugs(2.0.1)作为命令行Ant构建的一部分运行。我下载了FindBugs JAR并将其提取到/home/myuser/java/repo/umd/FindBugs/2.0.1/findBugs-2.0.1: 正如您在屏幕截图中看到的,在/home/myuser/java/repo/umd/findbugs/2.0.1/findbugs-2.0.1/lib下面有一个名为

  • 问题内容: 我不太确定是什么原因导致的,因为清单中正确列出了它: 我还添加了来构建路径,并将其移至的顶部,但是它仍然给我同样的错误。 编辑:我完全重建了该项目,并且无法重现该错误。不知道是什么原因造成的。 问题答案: 我的项目有同样的问题。这是由于我的项目与我在项目中添加的库项目之间的android支持库版本冲突而发生的。将相同版本的android支持库放入您的项目和包含的库项目中,并清理构建 …

  • 问题内容: 我目前正在一个项目中,我必须使用纯本地ndk。当我尝试从Irrlicht引擎源运行helloworld示例时,它起作用了。然后,按照该示例的相同格式尝试在我的项目中使用它。但是我得到了: 在运行我的项目时。 这是我的main.cpp文件: n Android.mk: 我在AndroidManifest.xml中给了Activity名称: 我在这里做什么错?如有必要,我将发布完整代码。

  • 我目前正在做一个项目,在这个项目中我必须使用纯原生的NDK。当我尝试从Irrlicht引擎源代码运行helloworld示例时,它起到了作用。然后我尝试在我的项目中使用它,遵循该示例的相同格式。但我得到: 在运行我的项目时。 并且我在AndroidManifest.xml中给出了活动名称: 我在这里犯了什么错误?如果需要,我会发布完整的代码。