简体   繁体   中英

java.lang.NoClassDefFoundError: javax/faces/FacesException

I'm trying to deploy a web application which I have imported from Eclipse workspace to NetBeans. But it's not getting deployed, instead it's giving me the below exception.

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)**

Am I missing some JARs?

The NoClassDefFoundError means that the class was present in the classpath during compiletime. Tomahawk has somewhere an import javax.faces.FacesException; line in the codebase. That is one of the classes of the core JSF API.

This means that the JSF libraries are missing in the webapp's classpath. The project was in Netbeans apparently associated with a server which is already bundled with JSF such as Glassfish, JBoss AS, etc. The project in Eclipse is seemingly not properly associated with the server, or the server in question does not have JSF bundled such as Tomcat, Jetty, etc.

The stacktrace hints that you're using Tomcat. You need to download JSF separately and drop the JAR files in webapp's /WEB-INF/lib (there where your Tomahawk libraries also are).

Yes, CNF exception always means missing JARs. The class loader can't find this:

javax.faces.FacesException

You find it by cutting & pasting the class name into findjar.com , like this:

http://www.findjar.com/index.x?query=javax.faces.FacesException

To add a different experience: when I encountered this problem it was because I was using ICEFaces and had included the ICEFaces jars in Tomcat's $CATALINA_BASE/lib directory, but included javax.faces.jar in my webapp's /WEB-INF/lib directory. The solution for me was to move javax.faces.jar from /WEB-INF/lib to $CATALINA_BASE/lib . Also, make sure you use the correct version of javax.faces.jar if you use something like ICEFaces.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM