2011-05-11 110 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爲我的項目,清潔&構建+運行和問題離開。