18

私たちはJSFプロジェクトを開発している3人であり、これまでJSFに参加したことはありません。奇妙なことに、SVNから同じデータをチェックアウトすると、チームメンバーの1人がTomcat7.0.27を使用するたびに404エラーを受け取ります。

Tomcat(Eclipse内で使用)が起動すると、次のログが書き出されます。

01.06.2012 11:45:16 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ......
01.06.2012 11:45:16 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:SnapManCloud' did not find a matching property.
01.06.2012 11:45:16 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
01.06.2012 11:45:16 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
01.06.2012 11:45:16 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 677 ms
01.06.2012 11:45:16 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
01.06.2012 11:45:16 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12
01.06.2012 11:45:17 org.apache.catalina.core.StandardContext listenerStart
FATAL: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4638)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5204)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5199)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
01.06.2012 11:45:17 org.apache.catalina.core.StandardContext listenerStart
FATAL: Skipped installing application listeners due to previous error(s)
01.06.2012 11:45:17 org.apache.catalina.core.StandardContext startInternal
FATAL: Error listenerStart
01.06.2012 11:45:17 org.apache.catalina.core.StandardContext startInternal
FATAL: Context [/SnapManCloud] startup failed due to previous errors
01.06.2012 11:45:17 org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8080"]
01.06.2012 11:45:17 org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
01.06.2012 11:45:17 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1279 ms

Eclipseによってプロジェクト(およびおそらくクラスパス)に含まれているJSF-ImplementationとしてMojarra2.0.3を使用しています。

確かにのエントリがありcom.sun.faces.config.ConfigureListenerますweb.xml

<listener>
     <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

エラーを探すための出発点はありますか?また、追加情報が必要な場合はお知らせください。

4

1 に答える 1

42

JSFは通常、GlassFish、JBoss AS / EAP、WildFly、WebSphere、WebLogicなどの本格的なJava EEアプリケーションサーバーにバンドルされています。ただし、TomcatはJSPとServlet APIのみをバンドルし、JSFAPIはバンドルしない最低限のJSP/Servletコンテナです。 。

TomcatでJSFを使用する場合は、JSFライブラリをWebアプリケーションと一緒に/WEB-INF/libフォルダーにバンドルするか、JSFライブラリをフォルダーに配置してTomcatにJSFをインストールする必要があり/libます。どうやら、そのアプリケーションは実際のJava EEアプリケーションサーバー用に設計されているため、JSFライブラリをにバンドルしていません/WEB-INF/lib

利用可能なJSF実装には、MojarraMyFacesの2つがあります。パッケージはMojarraを示しているcom.sun.facesので、それをダウンロードして、webappのランタイムクラスパス(つまり、webapp/WEB-INF/libまたはTomcatのいずれかに/lib)に配置します。


もう1つの考えられる原因は、プロジェクトがMojarra用に最初に開発されたと思われるときにMojarraの代わりにMyFacesを使用するJavaEEアプリケーションサーバーにプロジェクトをデプロイしたことです。そのリスナーは、すなわち、Mojarra固有です。このような場合は、<listener>エントリ全体をから削除することをお勧めしますweb.xml

いずれにせよ、Mojarraの明示的な登録は、実際ConfigureListenerweb.xmlは、MojarraのTLDファイルでリスナーを見つけられなかったGlassFishv3やJettyなどの古いバグのあるサーバーを回避するためにのみ必要です。適切なサーバーにデプロイすると、エントリ全体<listener>が不要になります。

参照:

于 2012-06-01T11:52:12.407 に答える