Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
269 views
in Technique[技术] by (71.8m points)

java - Netbeans deployment fails after class rename

I am writing a test client for a webservice. It's a Netbeans 6.9.1 WebApplication using JSF framework. I have one managed bean that calls the webservice.

Everything worked fine until I noticed a typo in my bean class name. It was serviceBean and I renamed it to ServiceBean with first letter upper case. I used safe rename function of Netbeans and both the filename and class signature changed as expected.

But from then I had a lot of trouble running my application on Glassfish 3.0.1.

I can build my application from Netbeans without error (even "Clean & Build"). But if I deploy there is the following message in server log:

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

I have a form on a facelet page that will be submitted to my managed bean. The form will be loaded despite of the above error but if I try to submit it I get the following error:

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)

So this will only be a follow-up error caused by the NoClassDefFoundError above.

And now to the strange part: If I build my project it creates the file ServiceBean.class but if I deploy the project from Netbeans and then look into my deployment directory the class is renamed to serviceBean.class.

It seems that deployment process renames the file.

What is the problem? (Netbeans 6.9.1, Glassfish 3.0.1, Windows 7)

UPDATE: It gets even better: Renamed ServiceBean.java to ServiceBean2.java. Result: If I "Clean & Build" the war file contains ServiceBean2.class only. If I deploy from NB the build dir contains ServiceBean2.class and serviceBean.class. How do I get rid of this ghost?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I was able to replicate a variation of this problem. I had to clear the NetBeans compilation cache (which appears to have issues on OSes that are case-forgiving...)

To move past the issue that I encountered, I had to:

  1. Stop the server

  2. Clean the project

  3. Stop NetBeans

  4. Delete %HOME%.netbeans6.9varcache

  5. Start NetBeans

When I ran the project which was having problems, NetBeans recompiled the project, started the server and opened the index.xhtml. I was able to navigate through the app successfully after that.

I have opened http://netbeans.org/bugzilla/show_bug.cgi?id=198565 to track the issue. Please monitor that issue and add any info that you think would assist somebody that attempts to resolve the issue.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...