[英]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.