簡體   English   中英

JBoss:EAR中的WAR文件在類路徑上找不到JAR庫

[英]JBoss: WAR file in EAR can't find JAR library on classpath

我在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中有以下內容:

<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添加到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<library-directory>標簽是JavaEE5特性,我認為JBoss 4.3不完全符合JavaEE5(它可以做EJB3,是的,但它只是部分支持)。

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

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

至於屬性文件,您需要添加它們作為java模塊的目錄,因此對於您的示例:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM