我正在使用Websphere 8.5及其內部Java EE框架,Apache OpenWebBeans用於DI & Apache MyFaces用於查看。我也有一個JAR,用一些用「@Named」註解的bean(所以它們是OpenWebBeans託管的bean)。此JAR位於我的Web應用程序的「WEB-INF/lib」目錄中以及應用程序的類路徑中。JAR中的beans.xml導致java.lang.NoClassDefFoundError:javax.faces.component.behavior.Behavior
有人告訴我,我應該在每個JAR中放入一個「beans.xml」文件,以便CDI實現可以找到並管理bean。我這樣做了(在應用程序的「META-INF」文件夾中有一個「beans.xml」文件,並且位於JAR的同一個文件夾中),並且在Tomcat 7中一切都完美無瑕(我可以在JSF頁面上訪問我的bean,一切都被注入並解決沒有任何問題,等等)。我在應用程序的「WEB-INF/lib」中使用Apache Open Web Beans 1.2和MyFaces 2.0 JAR運行Tomcat。現在,問題:在Websphere中,使用相同的配置(應用程序的「WEB-INF/lib」內沒有框架JAR,只是我的bean的JAR),我得到一個NoClassDefFoundError引用JSF類「javax」。 faces.component.behavior.Behavior「每次我嘗試加載一個頁面(沒有頁面加載,順便說一句)。奇怪的是,當我從應用程序和JAR中刪除所有「beans.xml」文件時,所有事情都可以像JSF一樣正常工作(OpenWebBeans bean加載和管理除外,當然,因爲沒有「beans.xml」)。
我到處搜索這個問題,並找不到任何線索。我知道這個類可用於websphere,因爲我搜索了服務器JAR,並在「WEBSPHERE_INSTALL \ plugins \ javax.j2ee.jsf.jar」中找到了它(並且因爲沒有「beans.xml」,所以找到了這個類並且一切工作正常),但我不明白爲什麼在應用程序的類加載器中存在任何「beans.xml」文件時未加載此JAR。請有人幫忙嗎?
您是否在部署到websphere之前將戰場上的OWB和OWB從戰爭中抽出,還是仍然存在? – covener
是的,戰爭中沒有框架的JAR。 –