Apache Tomcat 7を使用するJSPプロジェクトに取り組んでいます。
ロード時にプロジェクトを実行するとindex.htmlで問題ありませんが、別のページに移動しようとするとエラーが表示されます。
メソッドgetJspApplicationContext(ServletContext)は、タイプJspFactoryに対して未定義です
これを取り除くための解決策を教えてください。
_jsp-api.jar
_フォルダー内の_/WEB-INF/lib
_など、サーブレットコンテナー固有のライブラリを取り除きます。この例外は、Servlet 2.4/JSP 2.0以前のみをサポートするコンテナのservletcontainer固有のライブラリを配置したことを示します(getJspApplicationContext()
メソッドはServlet 2.5/JSP 2.1で導入されました)。これは大きな間違いです。これらのライブラリは、webappのクラスパスに属していません。
おそらく、プロジェクトのコンパイルエラーを克服するためにこれを行ったのでしょう。これは、実に一般的な初心者の間違いです。これは別の方法で解決する必要があります。プロジェクトのターゲットランタイムを参照する必要があります。任意のservletcontainerのmake/versionのライブラリをプロジェクトにコピーしないでください。異なるメーカーやバージョンのサーブレットコンテナとプロジェクトとの互換性がなくなります。
mavenプロジェクトがある場合は、次の依存関係を追加してください。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
プロジェクトでサーバーランタイムを参照する必要があります。
Eclipseの場合:
これでうまくいくはずです!
注:この問題の詳細については、 このStack Overflow post を参照してください