it-swarm.com.de

Kann den Tag-Bibliotheksdeskriptor für "http://Java.Sun.com/jsp/jstl/core" nicht finden.

Ich habe dies ganz oben auf meiner JSP-Seite eingefügt:

<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>

Ich habe die JSTL-JAR-Datei bereits im Verzeichnis WEB-INF/lib abgelegt. Dennoch kann die JSP die Taglib nicht auflösen. Ich bekomme die folgende Fehlermeldung:

Kann den Tag-Bibliotheksdeskriptor für " http://Java.Sun.com/jsp/jstl/core " nicht finden.

Ich benutze Eclipse Juno und die Projektstruktur ist unten dargestellt:

enter image description here

39
user962206

Kann den Tag-Bibliotheksdeskriptor für " http://Java.Sun.com/jsp/jstl/core " nicht finden.

Basierend auf einer Ihrer vorherigen Fragen verwenden Sie Tomcat 7. In diesem Fall benötigen Sie JSTL 1.2. Sie haben jedoch eine jstl.jar-Datei, während JSTL 1.2 eindeutig die Versionsnummer enthält, wie jstl-1.2.jar. Der einzige Dateiname jstl.jar ist typisch für JSTL 1.0 und 1.1. Diese Version erfordert einen standard.jar in /WEB-INF/lib, der die erforderlichen TLD-Dateien enthält. In Ihrem speziellen Fall fehlt jedoch standard.jar eindeutig in /WEB-INF/lib. Aus diesem Grund konnte der Taglib-URI nicht aufgelöst werden.

Um dies zu beheben, müssen Sie die falsche JAR-Datei entfernen, jstl-1.2.jar herunterladen und vollständig in /WEB-INF/lib ablegen. Das ist alles. Sie müssen es nicht extrahieren oder in Build Path des Projekts eintauchen.

Vergessen Sie nicht, auch diese lose c.tld-Datei zu entfernen. Es gehört absolut nicht dazu. Dies ist in einigen schlechten Tutorials oder Antworten an anderer Stelle im Internet beschrieben. Dies ist ein Mythos, verursacht durch ein großes Missverständnis und eine falsche Konfiguration. Es ist niemals erforderlich, eine lose JSTL-TLD-Datei im Klassenpfad zu haben, auch nicht in früheren JSTL-Versionen.

Falls Sie Maven verwenden, verwenden Sie die folgende Koordinate:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Sie sollten auch sicherstellen, dass Ihr web.xml als mindestens Servlet 2.4 und damit nicht als Servlet 2.3 oder älter deklariert ist. Andernfalls funktionieren EL-Ausdrücke in JSTL-Tags nicht. Wählen Sie die höchste Version aus, die mit Ihrem Zielcontainer übereinstimmt, und stellen Sie sicher, dass sich an Ihrem <!DOCTYPE> nirgendwo ein web.xml befindet. Hier ist ein mit Servlet 3.0 (Tomcat 7) kompatibles Beispiel:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://Java.Sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <!-- Config here. -->

</web-app>

Siehe auch:

89
BalusC

Die URI hängt von der verwendeten JSTL-Version ab. Für Version 1.0 verwenden Sie:

http://Java.Sun.com/jstl/core

und für Version 1.1 (und höher) müssen Sie Folgendes verwenden:

http://Java.Sun.com/jsp/jstl/core
8
nfechner

Ich hatte das gleiche problem und trotz jstl

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Ich musste auch "Standard" hinzufügen:

<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

Wie auch im vorigen Beitrag erwähnt:

6
Nenad Bulatovic

Durch das Herunterladen von jstl-1.2.jar anstelle von jstl.jar wird das Problem gelöst

1
shikha singh

Wenn Sie maven verwenden, sollte das <dependencies>-Tag Ihres Poms folgendermaßen aussehen:

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>javax.servlet.jsp.jstl-api</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
</dependencies>

Für mich geht das.

1
Anakii Eugene

Laden Sie einfach javax.servlet.jsp.jstl.jar herunter und fügen Sie Ihrem Buildpfad und WEB-INF/lib hinzu, wenn Sie einfach eine dynamische Webanwendung entwickeln.

Wenn Sie eine dynamische Webanwendung mit maven entwickeln, fügen Sie die Abhängigkeit javax.servlet.jsp.jstl in der pom-Datei hinzu.

Vielen Dank

nirmalrajsanjeev

0
Sanjeev Kumar

Damit es funktioniert:

Fügen Sie Ihrer Bibliothek die Dateien jstl und standard jar hinzu.

Ich hoffe es hilft.. :)

0
Sarat Chandra

Nun, ich habe diesen Beitrag gelesen und es scheint nicht gut genug zu sein, um dieses Problem zu beheben. 

Die frühlingsbasierte Anwendung auf dem Tomcat 8 funktioniert nicht. 

Hier ist die Lösung 

Schritt 1 ⇒ Füge die folgende Abhängigkeit in deiner pom.xml hinzu

<!-- JSTL Support -->

     <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Schritt 2 ⇒ Fügen Sie alle folgenden zwei Anweisungen in Ihrer JSP-Seite hinzu. Stellen Sie sicher, dass Sie das Attribut isELIgnored = "false" im Tag <% @ page%> verwenden

<%@ page language="Java" contentType="text/html; charset=ISO-8859-1" isELIgnored="false" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core"%>

Schritt 3 ⇒ Entferne alle anderen Konfigurationen, die du bisher in web.xml oder irgendwo anders vorgenommen hast :)

Schritt 4 ⇒ Reinige den Tomcat und starte den Tomcat neu. 

Hinweis zur Seite ⇒ JSTL funktioniert eigentlich nur mit den 3.x Servlet-Spezifikationen von Tomcat 8. 

[http://www.kriblog.com/j2ee/jsp/jstl-with-spring-4-on-Tomcat-8.html]
0
user1788142

sie müssen dies auch in web.xml konfigurieren. Bitte beziehen Sie sich auf den Code.

<taglib>
    <taglib-uri>http://Java.Sun.com/jsp/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/lib/c.tld</taglib-location>
</taglib>

Bitte lassen Sie mich wissen, wenn Sie noch Probleme haben.

0
Gautam

Das funktioniert auch:

<dependency>
    <scope>compile</scope>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

so wurde jstl 1.2 anstelle von standard.jar zusammen mit jstl-api 1.2 verwendet

0
Tomas Antos

fügen Sie die Maven-Abhängigkeiten hinzu:

<dependency>
  <groupId>jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
  <scope>compile</scope>
</dependency>
0
Dev M

Stellen Sie sicher, dass die beiden folgenden Gläser im Erstellungspfad vorhanden sind:

  1. standard-1.1.2.jar 
  2. jstl-api-1.2.jar

Maven-Abhängigkeiten sind:

<dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>$1.2</version>
</dependency>

<dependency>
   <groupId>taglibs</groupId>
   <artifactId>standard</artifactId>
   <version>1.1.2</version>
</dependency
0
Anshul Sood