我正在爲webservice編寫測試客戶端。這是一個使用JSF框架的Netbeans 6.9.1 WebApplication。我有一個調用web服務的託管bean。重命名後Netbeans部署失敗
一切正常,直到我注意到我的bean類名稱中有一個錯字。這是serviceBean我把它改名爲ServiceBean用第一個字母大寫。我使用Netbeans的安全重命名功能,文件名和類簽名都按預期更改。
但從那時起,我在Glassfish 3.0.1上運行我的應用程序時遇到了很多麻煩。
我可以從Netbeans無錯地構建我的應用程序(甚至是「Clean & Build」)。但是,如果我在那裏部署在服務器日誌中看到以下消息:
WARNUNG: Error in annotation processing: java.lang.NoClassDefFoundError: jsf/serviceBean (wrong name: jsf/ServiceBean)
WARNUNG: WEB9052: Unable to load class jsf.ServiceBean, reason: java.lang.ClassNotFoundException: jsf.ServiceBean
INFO: Mojarra 2.0.2 (FCS b10) für Kontext '/PidClient' wird initialisiert.
SCHWERWIEGEND: Unable to load annotated class: jsf.serviceBean, reason: java.lang.NoClassDefFoundError: jsf/serviceBean (wrong name: jsf/ServiceBean)
INFO: Loading application PidClient at /PidClient
我有一個將被提交給我的管理bean中的facelet頁面上的表單。表單將不顧上述錯誤的加載,但如果我嘗試提交我得到以下錯誤:
WARNUNG: /index.xhtml @19,94 value="#{serviceBean.fldLname}": Target Unreachable, identifier 'serviceBean' resolved to null
javax.el.PropertyNotFoundException: /index.xhtml @19,94 value="#{serviceBean.fldLname}": Target Unreachable, identifier 'serviceBean' resolved to null
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:93)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1008)
因此,這隻會造成上述NoClassDefFoundError的後續錯誤。
現在到了陌生的一部分: 如果我建我的項目它創建的文件ServiceBean.class但如果我從部署NetBeans中的項目,然後看着我的部署目錄類被重命名爲serviceBean.class。
似乎部署過程會重命名文件。
什麼問題? (Netbeans 6.9.1,Glassfish 3.0.1,Windows 7)
更新:它變得更好:將ServiceBean.java重命名爲ServiceBean2.java。結果:如果我「Clean & Build」,戰爭文件只包含ServiceBean2.class。如果我從NB部署構建目錄包含ServiceBean2.class 和 serviceBean.class。我如何擺脫這個鬼?
嘗試在NB項目的所有(配置)文件中搜索「serviceBean」(小寫的第一個字母)。一些conf文件可能包含這個舊名稱。 – MockerTim 2011-05-11 14:48:27
你在Mac或Windows? – vkraemer 2011-05-11 15:21:32
@vkraemer我在Windows 7上 – 2011-05-11 15:48:27