[解決済み] java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
質問
古いStruts 1のアプリは、常にAntを使って構築されていますが、代わりにMavenを使うように変換しています。私のアプリの構造はモジュール化されており、依存関係管理は包含モジュールで行っています。コンテナモジュールのdep mgmtセクションには、以下の内容が含まれています。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
...
</dependencies>
</dependencyManagement>
戦争をビルドするとき(私は
package
Mavenジョブを含むモジュールから)、intelliJからそのwarでTomcatの設定を実行すると、ブラウザに次のように表示されます。
org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:161)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:630)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:149)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
java.net.URLClassLoader$1.run(URLClassLoader.java:202)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(URLClassLoader.java:190)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:628)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:149)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
検索してみると、javax.servletのjarのバージョン競合が原因のようですが、WEB-INF/libディレクトリには全く何もありません。のスコープを使用してみました。
provided
,
compile
そして、さらに
install/pom
しかし、これらは何の役にも立ちません。
tomcatのログには何も追加されていません。
jspがコンパイルされていることを確認しました。jspc-maven-pluginを使用しています。
私のサブモジュール(含むモジュールではない)のpom.xmlに、あります。
<build>
<!-- default goal to run if somebody doesn't pick one (rarely matters) -->
<defaultGoal>install</defaultGoal>
<!-- resources and filtering - also see configuration under maven-war-plugin below -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>src/main/resources/${env}.properties</filter>
<filter>src/main/resources/${env}.tokens</filter>
</filters>
<plugins>
<!-- begin - precompiling jsps -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jspc-maven-plugin</artifactId>
<executions>
<execution>
<id>jspc</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<warSourceDirectory>${basedir}/src/main/webroot</warSourceDirectory>
<inputWebXml>${basedir}/src/main/webroot/WEB-INF/web.xml</inputWebXml>
<!--<workingDirectory>${basedir}/src/main/webroot</workingDirectory>-->
</configuration>
</execution>
</executions>
</plugin>
<!-- end - precompiling jsps -->
<!-- used to build warfiles -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
<configuration>
<webResources>
<resource>
<directory>${pom.basedir}/src/main/webroot</directory>
<filtering>true</filtering>
<!--<targetPath>WEB-INF</targetPath>-->
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
mavenのビルド出力で、jspがコンパイルされていることが確認できます。しかし、まだJasperExceptionが発生します。
どうすればいいですか?
投稿から時間が経ってしまいましたが、私がどのように解決したかを紹介しようと思います(今思い出せる限りです)。
Mavenの依存関係ツリーを行って依存関係の競合を見つけ、依存関係の除外ですべての競合を削除しました、例えば。
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.1</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
また
provided
スコープに javax.servlet の依存関係を設定することで、アプリを実行したときに Tomcat が提供するものとさらなる競合が発生しないようにしました。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
HTH
関連
-
[解決済み] JSPの式はどのようにコメントするのですか?
-
[解決済み] JSP用のクラスがコンパイルできない
-
[解決済み] JSTLでコレクションサイズを確認する
-
[解決済み] TomcatのJSPページがコンパイルできない(java.io.IOException: tmpFile.renameTo(classFile) failed)。
-
[解決済み] javax.servlet.jsp.PageContext を型に解決できない [重複] 。
-
[解決済み] JSPで関数を宣言する?
-
[解決済み] java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
-
[解決済み] 空またはNULLのJSTL cタグを評価する
-
[解決済み】JSPやJSTLでif...elseを使用する場合
-
[解決済み】Java / Jakarta EEのWeb開発、何から始めてどんなスキルが必要ですか?[終了しました]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSP用のクラスがコンパイルできない
-
[解決済み] JSTLでコレクションサイズを確認する
-
[解決済み] jspファイル内のjava Stringを印刷する方法 [重複]。
-
[解決済み] TomcatのJSPページがコンパイルできない(java.io.IOException: tmpFile.renameTo(classFile) failed)。
-
[解決済み] java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
-
net::ERR_ABORTED 404 (Not Found) jspでjs、cssを導入する際のエラー
-
[解決済み] 空またはNULLのJSTL cタグを評価する
-
Echartsコンソールのアラート domの幅や高さを取得できない
-
[解決済み】JSPやJSTLでif...elseを使用する場合
-
[解決済み】Java / Jakarta EEのWeb開発、何から始めてどんなスキルが必要ですか?[終了しました]