java.lang.ClassNotFoundException:org.apache.myfaces.webapp.StartupServletContextListener

问题描述 投票:0回答:3

我在启动 JSF Web 应用程序时遇到以下异常:

SEVERE: Error configuring application listener of class org.apache.myfaces.webapp.StartupServletContextListener
java.lang.ClassNotFoundException: org.apache.myfaces.webapp.StartupServletContextListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3786)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
    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.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

这是我的

web.xml
文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <display-name>J2S</display-name>
 <context-param>
  <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>client</param-value>
 </context-param>
 <context-param>
  <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
  <param-value>resources.application</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
  <param-value>false</param-value>
 </context-param>
 <context-param>
  <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
  <param-value>true</param-value>
 </context-param>
 <listener>
  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.faces</url-pattern>
 </servlet-mapping>
<servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>/faces/*</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  welcome-file>index.xhtml</welcome-file>
 </welcome-file-list>
</web-app>

这个异常是怎么引起的,如何解决?

jsf-2 myfaces
3个回答
12
投票

java.lang.ClassNotFoundException:org.apache.myfaces.webapp.StartupServletContextListener

ClassNotFoundException
表示应用程序的运行时类路径中缺少提到的类。上述类是 MyFaces JSF 实现的一部分。你需要 下载 MyFaces Core Distribution,解压该文件并将在
/lib
文件夹中找到的 JAR 文件放入您的 web 应用程序项目的
/WEB-INF/lib
文件夹中。请注意,MyFaces 附带三个
myfaces-*.jar
文件,您应该将 myfaces-api
myfaces-impl
JAR 文件都放入
either
,将 单独将
myfaces-bundle
JAR 文件放入
/WEB-INF/lib
中。


1
投票

我在 Eclipse 上使用 Tomcat7 时遇到了同样的问题。我有所有必需的 jar 文件。我发现这是由于服务器配置错误造成的。确保在 Eclipse 上创建动态 Web 项目时,为 Tomcat 选择 JSF 配置,而不是默认配置。


0
投票

除了@BalusC 答案之外,您还可以使用“myfaces-bundle”

https://mvnrepository.com/artifact/org.apache.myfaces.core/myfaces-bundle

欲了解更多信息,请检查:

https://stackoverflow.com/a/14425908/22462274

快乐编码!

© www.soinside.com 2019 - 2024. All rights reserved.