簡體   English   中英

GlassFish 3.1.2.2戰爭在耳內找不到罐子

[英]GlassFish 3.1.2.2 war can't find jar inside ear

我已經用這種結構構建了耳朵(此處未顯示所有文件):

myapp.ear/
    myapp-ejb.jar
    myapp-web.war
    META-INF/
        application.xml
    lib
        myapp-common.jar

問題是,當戰爭中的代碼嘗試引用myapp-common.jar中的類時,它將拋出java.lang.ClassNotFoundException

注意META-INF/application.xml的內容:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                 http://java.sun.com/xml/ns/javaee/application_6.xsd"
             version="6">
  <display-name>pncr-portal-ear</display-name>
  <module>
    <web>
      <web-uri>myapp-web.war</web-uri>
      <context-root>/</context-root>
    </web>
  </module>
  <module>
    <ejb>myapp-ejb.jar</ejb>
  </module>
  <library-directory>/lib</library-directory>
</application>

庫目錄在此處定義為相對於耳朵根部的/lib目錄,該位置恰好在耳朵的根部,盡管Java EE 5(可能是6)規范說它仍未將其裝載到類路徑中應該加載到類路徑中。

事實證明,我所引用的類與我認為的包裝略有不同。 該軟件包不再存在,但是Maven在編譯它時沒有抱怨。 因此,我炸掉了本地存儲庫,然后再次嘗試。 我仍然有錯誤。 然后,我發現了問題:在myapp.taglib.xml中,我仍然引用myapp-common.jar中某個類的舊版本,該類現在位於其他程序包中。

因此,課程是:如果看到ClassNotFoundException ,那么還要查看taglib.xml文件。

確認您的war文件中包含META-INF/manifest.mf ,其中包含(類似):

Manifest-Version: 1.0
Class-Path: lib/myapp-common.jar

暫無
暫無

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

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