找不到“;的标记库描述符;http://java.sun.com/jsp/jstl/core”

找不到“;的标记库描述符;http://java.sun.com/jsp/jstl/core”,java,eclipse,tomcat,jstl,Java,Eclipse,Tomcat,Jstl,我已经在JSP页面的最顶端包含了以下内容: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 我已经将JSTL JAR文件放在WEB-INF/lib目录中。但是JSP仍然无法解析标记库。我得到以下错误: 找不到“”的标记库描述符 我正在使用Eclipse Juno,项目结构如下所示: URI取决于您使用的JSTL版本。对于1.0版,请使用: http://java.sun.com/jstl/core

我已经在JSP页面的最顶端包含了以下内容:

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

我已经将JSTL JAR文件放在
WEB-INF/lib
目录中。但是JSP仍然无法解析标记库。我得到以下错误:

找不到“”的标记库描述符

我正在使用Eclipse Juno,项目结构如下所示:


URI取决于您使用的JSTL版本。对于1.0版,请使用:

http://java.sun.com/jstl/core
对于1.1(及更高版本),您需要使用:

http://java.sun.com/jsp/jstl/core

您还需要在web.xml中对此进行配置。请参阅下面的代码

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

http://java.sun.com/jsp/jstl/core
/WEB-INF/lib/c.tld
如果你还面临任何问题,请告诉我

找不到“”的标记库描述符http://java.sun.com/jsp/jstl/core"

基于您使用的是Tomcat7。在这种情况下,您需要JSTL1.2。但是,您有一个
jstl.jar
文件,而jstl 1.2显然包含了版本号,如so
jstl-1.2.jar
。唯一的文件名
jstl.jar
是jstl 1.0和1.1的典型文件名。此版本需要
标准.jar
以及
/WEB-INF/lib
中包含必要的TLD文件。但是,在您的特定情况下,
/WEB-INF/lib
中显然缺少
standard.jar
,这正是无法解析taglib URI的原因

要解决这个问题,您必须删除错误的JAR文件,下载并将其全部放到
/WEB-INF/lib
中。这就是全部。您不需要提取它,也不需要修改项目的构建路径

不要忘了也删除松散的
c.tld
文件。它绝对不属于那里。这确实是在一些糟糕的教程或互联网上其他地方的答案中得到的指导。这是一个由重大误解和误解造成的神话。在类路径中永远不需要松散的JSTL TLD文件,在以前的JSTL版本中也不需要

如果使用Maven,请使用以下坐标:


javax.servlet
(您可以通过将鼠标悬停在上并单击信息链接到达那里)

  • 如果您正在使用maven,pom的
    标记应该如下所示:

    <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>
    
    
    javax.servlet
    servlet api
    2.5
    javax.servlet.jsp.jstl
    javax.servlet.jsp.jstl-api
    1.2.1
    塔格利布
    标准
    1.1.2
    

    这对我来说很有效。

    好吧,我已经读过这篇文章,似乎还不够好,无法解决这个问题

    tomcat 8上基于Spring的应用程序将无法工作

    这是解决办法

    步骤1⇒ 在pom.xml中添加以下依赖项

    <!-- 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>
    

    我也有同样的问题,尽管有jstl

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    
    
    javax.servlet
    
    
  • 对于1.1(及更高版本)使用:
  • 要使其正常工作:

    jstlstandardjar文件添加到您的库中


    希望有帮助……)

    添加maven依赖项:

    <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>
    
    
    jstl
    jstl
    1.2
    编译
    塔格利布
    标准
    1.1.2
    编译
    
    只要下载javax.servlet.jsp.jstl.jar并添加到构建路径和
    WEB-INF/lib
    (如果您只是开发动态WEB应用程序)

    使用maven开发动态web应用程序时,请在pom文件中添加javax.servlet.jsp.jstl依赖项

    谢谢


    nirmalrajsanjeev

    确保构建路径中存在以下两个JAR:

  • 标准-1.1.2.jar
  • jstl-api-1.2.jar
  • Maven依赖项包括:

    <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
    
    
    javax.servlet.jsp.jstl
    JSTLAPI
    $1.2
    塔格利布
    标准
    1.1.2
    
    下载jstl-1.2.jar而不是jstl.jar解决了这个问题

    这同样有效:

    <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>
    
    
    编译
    javax.servlet.jsp.jstl
    JSTLAPI
    1.2
    javax.servlet
    jstl
    1.2
    
    因此,我使用了jstl 1.2而不是standard.jar以及jstl api 1.2(我在Eclipse 2019中使用Java 8和Tomcat 9):

    pom.xml

        <!-- jstl -->
        <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>
    
    
    javax.servlet
    servlet api
    2.5
    javax.servlet.jsp.jstl
    javax.servlet.jsp.jstl-api
    1.2.1
    塔格利布
    标准
    1.1.2
    
    .jsp文件

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    

    这是处理JSTL时非常常见的错误

    只需解决此错误:-

  • 下载jstl-1.1.2.jarstandard-1.1.2.jar
  • 然后将它们粘贴到动态WEB应用程序项目的WEB-INF下的lib文件夹中
  • 你会发现错误已经消失了


    希望这有帮助。

    要解决jsp中的问题,我们必须在pom文件中使用下面的依赖项。如果不使用maven,则下载依赖项jar并将其添加到WEB-INF目录。
    <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>
    
    
    jstl
    jstl
    1.2
    编译
    塔格利布
    标准
    1.1.2
    编译
    
    我收到了相同的错误消息(Eclipse Enterprise 2020-06、Tomcat 8.5、dynamic web project),即使我下载了jst库()的1.2.5版,将其放入“web-INF/lib”文件夹并将
    添加到jsp文件的最顶端


    改用1.2()版本解决了这个问题。

    我发现,有时即使有正确的依赖项,Eclipse也会引发错误。以下是我用来进行Eclipse更新的方法:

    方法1:复制粘贴jsp。

    我还发现了一种奇怪的情况,即当同一个jsp在我的目录中更深时,它的taglib就找不到了。但是,当它位于/webapp/下时,它没有问题

    我尝试了maven clean、maven build、project clean,但都无法解决问题

    我通过删除带有错误的jsp解决了这个问题,可以将正确的jsp从外部文件夹复制到我的
        <!-- jstl -->
        <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>
    
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    
    <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>
    
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>