webentwicklung-frage-antwort-db.com.de

Das absolute uri: http://Java.Sun.com/jsp/jstl/core kann weder in der Datei web.xml noch in den mit dieser Anwendung bereitgestellten JAR-Dateien aufgelöst werden

Ich verwende JDK 1.7, Apache Tomcat 7.0.23 und habe die JSTL-Kernbibliothek (1.2) und das STANDARD-Glas im Ordner WEB_INF lib abgelegt. Es wird keine Warnung ausgegeben, aber wenn ich versuche, den Code auszuführen

<%@ 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> 

es gibt mir den folgenden fehler:

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)

Kann mir jemand vorschlagen, welchen Fehler ich mache?

45
Nishit Jain

Entferne das standard.jar. Es ist anscheinend eine alte JSTL 1.0-Version, als die TLD-URIs ohne /jsp Pfad. Mit JSTL 1.2 als verfügbar hier benötigen Sie kein standard.jar überhaupt. Nur die jstl-1.2.jar im /WEB-INF/lib ist ausreichend.

Siehe auch:

43
BalusC

Ich habe das gleiche Problem gelöst. Ich habe gerade JSTL-1.2.jar zu /Apache-Tomcat-x.x.x/lib Hinzugefügt und den Gültigkeitsbereich auf maven pom.xml gesetzt:

 <dependency>
     <groupId>jstl</groupId>
     <artifactId>jstl</artifactId>
     <version>1.2</version>
     <scope>provided</scope>
 </dependency>
23
Yauhen

Stellen Sie sicher, dass Sie nicht alle Gläser übersprungen haben

Tomcat.util.scan.StandardJarScanFilter.jarsToSkip

in Tomcat catalina.properties.

4
MGorgon

Ich habe den Bereich entfernt und dann ein maven-Update verwendet, um dieses Problem zu lösen.

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

Die jstl-Bibliothek ist nicht im Tomcat-Bibliotheksordner vorhanden. Deshalb müssen wir sie einbeziehen. Ich verstehe nicht, warum wir angewiesen werden, sowohl den Servlet-API- als auch den JSTL-Gültigkeitsbereich wie angegeben beizubehalten.

2
Nirmalya Kar

Der fragliche Fehler kann auch durch disabled JarScanner in Tomcat/conf/context.xml Verursacht werden.

Siehe auch Ein Upgrade von Tomcat 8.0.39 auf 8.0.41 führt zu Fehlern, bei denen der Scan fehlgeschlagen ist. .

Mit <JarScanner scanManifest="false"/> Können beide Probleme vermieden werden.

1
Vadzim

Wenn Sie Eclipse und Maven zum Behandeln von Abhängigkeiten verwenden, müssen Sie möglicherweise diese zusätzlichen Schritte ausführen, um sicherzustellen, dass Eclipse die Abhängigkeiten ordnungsgemäß kopiert. Maven-Abhängigkeiten, die in WEB-INF/lib nicht sichtbar sind. ( nämlich die Deployment Assembly für Dynamic Web Application)

1
Colin D

wenn Sie Spring Boot verwenden, überprüfen Sie in application.propertiese Diese Eigenschaft wird kommentiert oder entfernt, falls vorhanden.

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

0
Ahmad R. Nazemi

Wenn Sie maven project verwenden, müssen Sie nur die jstl-1.2-JAR in Ihrer Abhängigkeit hinzufügen. Wenn Sie die JAR-Datei einfach zu Ihrem Projekt hinzufügen, ist es möglich, dass die JAR-Datei nicht zu Ihrem Projekt-Artefakt hinzugefügt wird. Sie müssen lediglich die JAR-Datei in die WEB-INF/lib-Datei einfügen.

enter image description here

So sollte Ihr Projekt aussehen, wenn jstl nicht zum Artefakt hinzugefügt wird. Drücken Sie einfach die Fix-Taste und Intellij fügt die JAR-Datei im oben genannten Pfad hinzu. Führen Sie das Projekt aus und legen Sie los.

0
Sayantan Dey

Dies kann an den transitiven Abhängigkeiten liegen.

Versuchen Sie, den Bereich der JSTL-Bibliothek hinzuzufügen/zu entfernen.

Das hat bei mir funktioniert!

0
Gru