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>
この例外はどのように発生し、どうすれば解決できますか?
Java.lang.ClassNotFoundException:org.Apache.myfaces.webapp.StartupServletContextListener
ClassNotFoundException
は、言及されたクラスがアプリケーションのランタイムクラスパスにないことを意味します。上記のクラスは MyFaces JSF実装の一部です。 download MyFaces Core Distributionを実行し、ファイルを解凍して、webappプロジェクトの/lib
フォルダーの/WEB-INF/lib
フォルダーにあるJARファイルを配置する必要があります。 MyFacesには3つのmyfaces-*.jar
ファイルが付属していることに注意してください。myfaces-api
とmyfaces-impl
の両方のJARファイルをどちらか置く必要があります、またはのみmyfaces-bundle
内の/WEB-INF/lib
JARファイル。
EclipseでTomcat7を使用しても同じ問題が発生しました。必要なjarファイルはすべて揃っていました。サーバーの構成が間違っていることが原因であることがわかりました。 Eclipseで動的Webプロジェクトを作成するときは、Tomcatにデフォルトの構成ではなくJSF構成を選択するようにしてください。