JDK 1.7、Apache Tomcat 7.0.23を使用しており、JSTLコアライブラリ(1.2)とSTANDARD jarをWEB_INF libフォルダに配置しましたが、警告は表示されませんが、コードを実行しようとすると
<%@ taglib uri="http://Java.Sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- Create Bean Instance-->
<jsp:useBean id="listdomain" class="bean.PopulateMultiDomain" scope="session"></jsp:useBean>
<jsp:setProperty property="*" name="listdomain"/>
<c:forEach var="item" items="${listdomain.status}">
<option>
<c:out value="${item}" />
</option>
</c:forEach>
次のエラーが表示されます。
org.Apache.jasper.JasperException: The absolute uri: http://Java.Sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
org.Apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.Java:56)
org.Apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.Java:410)
org.Apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.Java:117)
org.Apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.Java:311)
org.Apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.Java:152)
org.Apache.jasper.compiler.Parser.parseTaglibDirective(Parser.Java:410)
org.Apache.jasper.compiler.Parser.parseDirective(Parser.Java:475)
org.Apache.jasper.compiler.Parser.parseElements(Parser.Java:1425)
org.Apache.jasper.compiler.Parser.parse(Parser.Java:138)
org.Apache.jasper.compiler.ParserController.doParse(ParserController.Java:242)
org.Apache.jasper.compiler.ParserController.parse(ParserController.Java:102)
org.Apache.jasper.compiler.Compiler.generateJava(Compiler.Java:198)
org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:373)
org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:353)
org.Apache.jasper.compiler.Compiler.compile(Compiler.Java:340)
org.Apache.jasper.JspCompilationContext.compile(JspCompilationContext.Java:646)
org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:357)
org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:390)
org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:722)
誰が私が犯している間違いを提案できますか?
standard.jar
を削除します。 TLD URIに/jsp
パスがない場合、明らかに古いJSTL 1.0バージョンです。 JSTL 1.2が利用可能であれば こちらstandard.jar
はまったく必要ありません。 jstl-1.2.jar
の/WEB-INF/lib
だけで十分です。
同じ問題を解決しました。 JSTL-1.2.jarを/Apache-Tomcat-x.x.x/lib
に追加し、スコープをmaven pom.xmlで提供されるように設定しました。
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
スキップしていないことを確認してくださいall jars in
Tomcat.util.scan.StandardJarScanFilter.jarsToSkip
tomcat catalina.propertiesで。
スコープを削除し、maven更新を使用してこの問題を解決しました。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
**<!-- <scope>provided</scope> -->**
</dependency>
jstlライブラリはTomcat libフォルダーに存在しないため、含める必要があります。 提供されているサーブレットAPIとjstlのスコープの両方を保持するように指示された理由がわかりません。
問題のエラーは、無効になっている可能性もあります JarScanner in Tomcat/conf/context.xml
。
Tomcat 8.0.39から8.0.41にアップグレードすると、「スキャンに失敗しました」エラーが発生します も参照してください。
<JarScanner scanManifest="false"/>
は両方の問題を回避できます。
Eclipseとmavenを使用して依存関係を処理している場合、これらの追加手順を実行して、Eclipseが依存関係を適切にコピーすることを確認する必要があります Mavenの依存関係はWEB-INF/libに表示されません (つまり、動的なWebアプリケーション)
application.propertiese
でスプリングブートチェックを使用する場合、このプロパティはコメント化されるか、存在する場合は削除します。
これは、推移的な依存関係が原因である可能性があります。
JSTLライブラリにスコープを追加/削除してみてください。
これは私のために働いた!