web-dev-qa-db-ja.com

絶対URI:http://Java.Sun.com/jsp/jstl/coreは、web.xmlまたはこのアプリケーションでデプロイされたjarファイルで解決できません

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)

誰が私が犯している間違いを提案できますか?

45
Nishit Jain

standard.jarを削除します。 TLD URIに/jspパスがない場合、明らかに古いJSTL 1.0バージョンです。 JSTL 1.2が利用可能であれば こちらstandard.jarはまったく必要ありません。 jstl-1.2.jar/WEB-INF/libだけで十分です。

こちらもご覧ください:

43
BalusC

同じ問題を解決しました。 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>
23
Yauhen

スキップしていないことを確認してくださいall jars in

Tomcat.util.scan.StandardJarScanFilter.jarsToSkip

tomcat catalina.propertiesで。

4
MGorgon

スコープを削除し、maven更新を使用してこの問題を解決しました。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    **<!-- <scope>provided</scope> -->**
</dependency>

jstlライブラリはTomcat libフォルダーに存在しないため、含める必要があります。 提供されているサーブレットAPIとjstlのスコープの両方を保持するように指示された理由がわかりません。

2
Nirmalya Kar

問題のエラーは、無効になっている可能性もあります JarScanner in Tomcat/conf/context.xml

Tomcat 8.0.39から8.0.41にアップグレードすると、「スキャンに失敗しました」エラーが発生します も参照してください。

<JarScanner scanManifest="false"/>は両方の問題を回避できます。

1
Vadzim

Eclipseとmavenを使用して依存関係を処理している場合、これらの追加手順を実行して、Eclipseが依存関係を適切にコピーすることを確認する必要があります Mavenの依存関係はWEB-INF/libに表示されません (つまり、動的なWebアプリケーション)

1
Colin D

application.propertieseでスプリングブートチェックを使用する場合、このプロパティはコメント化されるか、存在する場合は削除します。

server.Tomcat.additional-tld-skip-patterns = *。jar

0
Ahmad R. Nazemi

Mavenプロジェクトを使用している場合は、依存関係にjstl-1.2 jarを追加するだけです。 jarをプロジェクトに追加するだけの場合、jarファイルがプロジェクトプロジェクトの成果物に追加されない可能性があります。 WEB-INF/libファイルにjarファイルを追加するだけです。

enter image description here

これは、jstlがアーティファクトに追加されていない場合のプロジェクトの外観です。修正ボタンを押すだけで、intellijは上記のパスにjarファイルを追加します。プロジェクトを実行し、強打します。

0
Sayantan Dey

これは、推移的な依存関係が原因である可能性があります。

JSTLライブラリにスコープを追加/削除してみてください。

これは私のために働いた!

0
Gru