2011-07-15 21 views
8

Estoy tratando de implementar una aplicación web que he importado del área de trabajo de Eclipse a NetBeans. Pero no se está implementando, en cambio me está dando la siguiente excepción.java.lang.NoClassDefFoundError: javax/faces/FacesException

15 Jul, 2011 5:59:04 AM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.apache.myfaces.component.html.util.StreamingDestroyerListener 
java.lang.NoClassDefFoundError: javax/faces/FacesException 
     at org.apache.myfaces.shared_tomahawk.config.MyfacesConfig.<clinit>(MyfacesConfig.java:80) 
     at org.apache.myfaces.component.html.util.StreamingDestroyerListener.contextInitialized(StreamingDestroyerListener.java:32) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546) 
     at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637) 
     at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:521) 
     at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1359) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     **at java.lang.reflect.Method.invoke(Method.java:597)** 
     at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297) 
     **at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) 
     at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)** 
     at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500) 
     at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:849) 
     at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:351) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:199) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:558) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
     at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859) 
     at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579) 
     at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555) 
     **at java.lang.Thread.run(Thread.java:619)** 

¿Echo de menos algunos JAR?

Respuesta

8

la NoClassDefFoundError significa que la clase estaba presente en el classpath durante el tiempo de compilación. Tomahawk tiene en algún lugar una línea import javax.faces.FacesException; en la base de código. Esa es una de las clases de la API JSF principal.

Esto significa que las bibliotecas JSF no están en el classpath de la webapp. El proyecto estaba en Netbeans aparentemente asociado con un servidor que ya está incluido con JSF como Glassfish, JBoss AS, etc. El proyecto en Eclipse aparentemente no está asociado correctamente con el servidor, o el servidor en cuestión no no tiene JSF incluido como Tomcat, Jetty, etc.

El stacktrace insinúa que está utilizando Tomcat. Necesita download JSF por separado y soltar los archivos JAR en /WEB-INF/lib de webapp (allí también están sus bibliotecas Tomahawk).

+0

¿Qué sucede si recibo el mismo error en Jetty (mientras ejecuto 'mvn embarcadero: ejecuta')? Traté de poner JSF jar en 'WEB-INF/lib', pero no ayudó. –

+0

@Dmitri: Maven requiere una forma diferente de gestionar dependencias (diablos, ** es ** una forma de gestionar dependencias). Tendría que configurarlo por 'pom.xml'. – BalusC

+0

Lo sé y agregué la dependencia respectiva a la sección de configuración de Jetty. ClassNotFoundError se ha ido, pero ahora estoy obteniendo 'java.lang.ClassFormatError: atributo Ausente de código en el método que no es nativo o abstracto en el archivo de clase javax/faces/component/html/HtmlOutcomeTargetButton'. –

0

Para añadir una experiencia diferente: cuando me encontré con este problema se debía a que estaba usando ICEFaces y había incluido los frascos icefaces en el directorio de Tomcat $CATALINA_BASE/lib, sino que incluía javax.faces.jar en el directorio de mi aplicación web /WEB-INF/lib. La solución para mí fue mover javax.faces.jar de /WEB-INF/lib a $CATALINA_BASE/lib. Además, asegúrese de utilizar la versión correcta de javax.faces.jar si usa algo como ICEFaces.

Cuestiones relacionadas