web-dev-qa-db-ja.com

メソッドgetJspApplicationContext(ServletContext)は、タイプJspFactoryに対して未定義です

Apache Tomcat 7を使用するJSPプロジェクトに取り組んでいます。

ロード時にプロジェクトを実行するとindex.htmlで問題ありませんが、別のページに移動しようとするとエラーが表示されます。

メソッドgetJspApplicationContext(ServletContext)は、タイプJspFactoryに対して未定義です

これを取り除くための解決策を教えてください。

29

_jsp-api.jar_フォルダー内の_/WEB-INF/lib_など、サーブレットコンテナー固有のライブラリを取り除きます。この例外は、Servlet 2.4/JSP 2.0以前のみをサポートするコンテナのservletcontainer固有のライブラリを配置したことを示します(getJspApplicationContext()メソッドはServlet 2.5/JSP 2.1で導入されました)。これは大きな間違いです。これらのライブラリは、webappのクラスパスに属していません。

おそらく、プロジェクトのコンパイルエラーを克服するためにこれを行ったのでしょう。これは、実に一般的な初心者の間違いです。これは別の方法で解決する必要があります。プロジェクトのターゲットランタイムを参照する必要があります。任意のservletcontainerのmake/versionのライブラリをプロジェクトにコピーしないでください。異なるメーカーやバージョンのサーブレットコンテナとプロジェクトとの互換性がなくなります。

こちらもご覧ください:

73
BalusC

mavenプロジェクトがある場合は、次の依存関係を追加してください。

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
6
Giovanni Perea

プロジェクトでサーバーランタイムを参照する必要があります。

Eclipseの場合:

  • 「プロジェクト|プロパティ| Javaビルドパス|ライブラリタブ]」を選択します
  • [ライブラリの追加|サーバーランタイム| Apache Tomcat 7]をクリックします
  • OKをクリックします。
  • プロジェクトをクリーンアップして、再度ビルドします(「プロジェクト|クリーン」、次に「プロジェクト|すべてビルド」)

これでうまくいくはずです!

注:この問題の詳細については、 このStack Overflow post を参照してください

0
Brad Parks