6

JSF で単純な Hello World アプリを試していますが、開始時に Tomcat によってスローされた例外に基づいて、FacesServlet初期化されていないことがわかります。必要なjarファイルmyfaces-api, bundle, implとコモンズ beanutils、コーデック、コレクション、ダイジェスター、ロギングがあります。それとは別に、SOに関する別の質問を読み、それも必要jsf-api.jar and jsf-impl.jarであり、これも配置しWEB-INF/libてビルドパスに追加しました

まだ運がありません。EclipseとTomcat 7を使用して、Ubuntuで開発しています

これが私のweb.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Doom</display-name>
  <display-name>JavaServerFaces</display-name>

    <!-- Change to "Production" when you are ready to deploy -->
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>

    <!-- Welcome page -->
    <welcome-file-list>
        <welcome-file>faces/welcome.xhtml</welcome-file>
    </welcome-file-list>

    <!-- JSF mapping -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Map these files with JSF -->
    <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>*.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>*.xhtml</url-pattern>
    </servlet-mapping>
</web-app>

これは例外です

java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
    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.StandardWrapper.loadServlet(StandardWrapper.java:1062)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4935)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5262)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5257)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
4

4 に答える 4

16

2週間後、私は答えを見つけました。最後にいつものように非常に簡単です。両方をコピーする必要があります

jsf-api.jar
jsf-impl.jar

トムキャットにlib。ライブラリに入れてprojectもうまくいかないようです。

于 2013-08-17T01:39:03.910 に答える
1

私はEclipse JunoとTomcat 7 - Tomee 1.6.0で作業して同じ問題を抱えていました。

mojarra 2.0.3 を使用したいのですが、サーバーの展開で多くの問題を発見しました。Tomcat lib の myfaces-*.jar を削除して解決しました。次に、Tomcat ディレクトリに mojarra lib を追加し、サーバーを起動します。これで問題ありません。実行中です。

多くの構成変更の後、実際に機能するのはTomcatディレクトリにインストールされたライブラリであり、Eclipse構成を直接無視することがわかりました。多分バグ?

最後に、Tomcat ライブラリを自分で手動で変更するという問題を解決しました。今後も問題になることはないと思います。

于 2014-01-16T12:01:02.023 に答える