2011-05-11 16 views
7

Estoy escribiendo un cliente de prueba para un servicio web. Es una aplicación web Netbeans 6.9.1 que utiliza el marco JSF. Tengo un bean administrado que llama al servicio web.La implementación de Netbeans falla después del cambio de nombre de la clase

Todo funcionó bien hasta que noté un error tipográfico en mi nombre de clase de bean. Fue serviceBean y lo renombré a ServiceBean con mayúscula en la primera letra. Utilicé la función de cambio de nombre seguro de Netbeans y tanto el nombre del archivo como la firma de clase cambiaron como se esperaba.

Pero a partir de entonces tuve muchos problemas para ejecutar mi aplicación en Glassfish 3.0.1.

Puedo construir mi aplicación desde Netbeans sin error (incluso "Limpiar & Build"). Pero si puedo implementar existe el siguiente mensaje en el registro del servidor:

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 

Tengo un formulario en una página facelet que será sometido a mi bean gestionado. El formulario será cargado a pesar del error anterior, pero si trato de enviarlo me sale el siguiente 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) 

Así que esto sólo será un error de seguimiento causado por el NoClassDefFoundError anteriormente.

Y ahora a la parte extraña: Si construyo mi proyecto que crea el archivo ServiceBean.class pero si puedo implementar el proyecto de Netbeans y luego miro a mi directorio de implementación de la clase se cambia el nombre a serviceBean.class.

Parece que el proceso de implementación cambia el nombre del archivo.

¿Cuál es el problema? (Netbeans 6.9.1, 3.0.1 Glassfish, Windows 7)

ACTUALIZACIÓN: se pone aún mejor: ServiceBean.java renombrado a ServiceBean2.java. Resultado: si "Limpio & compilación", el archivo war contiene solo ServiceBean2.class. Si implemento desde NB, el directorio de compilación contiene ServiceBean2.class y serviceBean.class. ¿Cómo me deshago de este fantasma?

+0

intentar buscar "serviceBean" (con minúscula primera letra) en contra de todos los archivos (configuración) de su proyecto NB. Algunos archivos conf pueden contener este nombre antiguo. – MockerTim

+0

¿Estás en Mac o Windows? – vkraemer

+0

@vkraemer Estoy en Windows 7 –

Respuesta

14

Pude replicar una variación de este problema. Tuve que clear the NetBeans compilation cache (que parece tener problemas en los sistemas operativos que son de casos y que perdona ...)

de dejar atrás el problema que me encontré, tuve que:

  1. Detener el servidor

  2. Limpiar el proyecto

  3. parada NetBeans

  4. eliminar% HOME% \ .netbeans 6.9 \ var \ cache

  5. inicio NetBeans

Cuando me encontré con el proyecto que estaba teniendo problemas, NetBeans volver a compilar el proyecto, iniciado el servidor y abrió la index.xhtml. Pude navegar a través de la aplicación con éxito después de eso.

He abierto http://netbeans.org/bugzilla/show_bug.cgi?id=198565 para seguir el tema. Controle ese problema y agregue cualquier información que crea que ayudaría a alguien que intenta resolver el problema.

+0

Eso funcionó, muchas gracias por su ayuda, Vince! Estaré pendiente de este problema. –

+1

+1 ¡Oh Dios mío! Acabo de pasar más de 2 horas buscando en Google, cambiando faces-config, jugando con POJOs, ¡antes de darme cuenta de esto!:-( – merxbj

+0

No relacionado con la pregunta, pero estaba teniendo un problema similar después de crear un nuevo dominio en glassfish. Mientras implementaba la aplicación, netbeans aún estaba buscando el dominio anterior y daba un error similar al "error de implementación. ID ... ". Después de aplicar los pasos que proporcionó, se solucionó el error, gracias por la guía =) – cubbuk

0

que tenía un problema muy similar con NetBeans 7.3, lo que significa que aún no se ha fijado. Sucedió después de que hice un cambio de nombre y eliminación de una clase de entidad, y JPA se negó a creer que la clase se eliminó, por lo que no pude implementarlo en Glassfish.

me llevó muchas horas, al pasar de reinicio de NetBeans y GlassFish para realmente volver a instalarlos. Resulta que la reinstalación de NetBeans no borra su caché, y ahí es donde radica el problema.

Mientras corro OS X, hice lo siguiente en ~/Library/Caches/NetBeans:

$ grep -r MyDeletedEntity *

Y de golpe, había pocas referencias a mi clase borrado!

entonces procedió a eliminar el contenido de esa carpeta, a continuación, reinicia NetBeans y GlassFish desplegados a nuevo. ¡Ahora funciona!

Si esto no funciona, también mirar en /Aplicaciones/NetBeans/NetBeans {} whateverversion .app/Contents/Resources/NetBeans/NB/var/cache y borrar todo en esa carpeta también.

0

demasiado tarde, pero podría ayudar a los demás. Me acabo de dar cuenta de que JRebel guardaba referencias a los nombres antiguos. Inhabilité JRebel para mi proyecto, limpio & build + run y el problema se solucionó.

Cuestiones relacionadas