我正在为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