2011-05-11 111 views
7

我正在为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。我如何摆脱这个鬼?

+0

尝试在NB项目的所有(配置)文件中搜索“serviceBean”(小写的第一个字母)。一些conf文件可能包含这个旧名称。 – MockerTim 2011-05-11 14:48:27

+0

你在Mac或Windows? – vkraemer 2011-05-11 15:21:32

+0

@vkraemer我在Windows 7上 – 2011-05-11 15:48:27

回答

14

我能够复制这个问题的一个变种。我不得不clear the NetBeans compilation cache(这似乎对操作系统是区分宽容问题...)

搬过去,我所遇到的问题,我必须:

  1. 停止服务器

  2. 清洁工程

  3. 停止的NetBeans

  4. 删除%HOME%的.netbeans \ 6。9 \ VAR \缓存

  5. 启动NetBeans

当我跑这是有问题的项目,重新编译的NetBeans项目,启动服务器,打开的index.xhtml。之后,我能够成功浏览应用。

我已打开http://netbeans.org/bugzilla/show_bug.cgi?id=198565来跟踪此问题。请监控该问题并添加您认为可以帮助解决问题的人的任何信息。

+0

这工作,非常感谢您的帮助,文斯!我会密切关注这个问题。 – 2011-05-13 06:30:49

+1

+1我的天啊!在我遇到这个之前,我只花了2个多小时的谷歌搜索,改变了faces-config,和POJO一起玩。:-( – merxbj 2012-05-31 01:06:08

+0

与这个问题无关,但在glassfish上创建一个新的域后,我遇到了类似的问题。在部署应用程序时,netbeans仍然在寻找旧域,并给出类似于“部署错误的错误”错误的目标服务器ID ..“。应用您提供的步骤后,错误已解决,感谢您的指导=) – cubbuk 2013-11-15 09:48:51

0

我有一个NetBeans 7.3非常类似的问题,这意味着它仍然没有修复。它发生在我对一个实体类进行重命名和删除之后,JPA拒绝相信该类被删除,所以我无法部署到Glassfish。

花了我很多时间,从重新启动NetBeans和Glassfish到重新安装它们。事实证明,重新安装NetBeans并没有清除它的缓存,这就是问题所在。

当我运行OS X,我的确在〜/图书馆/缓存/ NetBeans中的以下内容:

$ grep的-r MyDeletedEntity *

与繁荣,有我删除类一些参考!

然后我继续删除该文件夹中的内容,重新启动NetBeans,然后再次部署到Glassfish。现在它工作了!

如果这不起作用,请查看 /Applications/NetBeans/NetBeans {whateverversion} .app/Contents/Resources/NetBeans/nb/var/cache并删除该文件夹中的所有内容。

0

太晚了,但可能会帮助别人。我刚刚意识到JRebel一直在引用旧名称。我禁用JRebel为我的项目,清洁&构建+运行和问题离开。