0

私は基本的な JSF アプリケーションを作成しようとしていますが、それを機能させることができないようです - デフォルトでは、faces-config.xml ファイルに何かが欠けていると思われますが、何がわからないのですか。次のエラーが表示されます。

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

私はそれをグーグルで調べたところ、おそらく欠落しているjarファイルであることがわかりました。これをダウンロードしてプロジェクトの「ビルドパス」に追加し、サーバーを更新して再起動しましたが、それでも機能しませんでした。外部 JAR ファイルは「jstl-1.2.jar」と呼ばれます。

報告されているエラーのリストは次のとおりです。

HTTP Status 500 - javax/servlet/jsp/jstl/core/Config

type Exception report

message javax/servlet/jsp/jstl/core/Config

description The server encountered an internal error that prevented it from fulfilling     
this request.

exception 

javax.servlet.ServletException: javax/servlet/jsp/jstl/core/Config
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)


root cause 

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:345)
com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)


root cause 

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:345)
com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.32 logs.

何か案は?JSF アプリケーションから単純な HelloWorld をポップアウトするのはこれほど複雑ではないため、これは単純な修正である必要があります。

乾杯

4

2 に答える 2

2

これをダウンロードしてプロジェクトの「ビルドパス」に追加し、サーバーを更新して再起動しましたが、それでも機能しませんでした。

これは正しいアプローチではありません。プロジェクトのビルド パスプロパティには一切触れないでください。/WEB-INF/libJSTL JAR ファイルをプロジェクトのフォルダーに直接ドロップするだけです。これを不注意に「修正」しようとして、[ビルド パス] プロパティで行ったすべての変更を元に戻すようにしてください。そうしないと、壊れたクラスパス/ライブラリ構造で Web アプリケーションがビルド/デプロイされたままになります。

これが必要な理由は、<c:xxx>ここにリストされているように、JSF2 Facelets がすべてのタグを機能させるために JSTL 依存関係を必要とするためです。ただし、そのままでは JSTL が同梱されていないベアボーン JSP/サーブレット コンテナーである Tomcat を使用しています。個別にダウンロードしてインストールする必要があります。Glassfish のような本格的なコンテナーでは、これを行う必要はありません (ちなみに、JSF JAR ファイルの場合もそうではありません)。

以下も参照してください。

于 2012-11-21T16:25:44.110 に答える
0

jarファイルをWEB-INFフォルダーに移動しても問題は解決しなかったため、検索した後、このチュートリアルに出会いました。その手順に従った後、それも機能しなかったので、私がしなければならなかったのはこれでした:

  1. 上記サイトからzipフォルダをダウンロード
  2. 便利な場所に解凍します-私にとってはデスクトップでした
  3. lib フォルダーを調べて、この中の jar ファイルを別のフォルダーに配置します。
  4. プロジェクトを作成するための通常の手順に従います -> ファイル -> 新規 -> 動的 Web プロジェクト
  5. プロジェクトの詳細を入力してください
  6. 「JSF Capabilities」ページに移動したら、「Manage Libraries」アイコンをクリックし、「New」を選択してフォルダーを作成し、好きな名前を付けます。先ほどの jar ファイルをこれに追加し、[完了] を選択します。

これで準備完了です。

手伝ってくれてありがとう

PS JAR ファイルのリストは次のとおりです。これも、zip の WEB-INF/lib フォルダーにあります。

  • commons-beanutils-1.7.0.jar
  • commons-chain-1.1.jar
  • commons-collections.jar
  • commons-digester-1.8.jar
  • commons-logging-1.0.4.jar
  • jsf-api.jar
  • jsf-impl.jar
  • jstl.jar
于 2012-11-21T14:57:18.690 に答える