找不到springframework的标签库描述符

Posted

技术标签:

【中文标题】找不到springframework的标签库描述符【英文标题】:Can not find the tag library descriptor of springframework 【发布时间】:2011-05-12 06:35:54 【问题描述】:

我正在尝试遵循 spring JPetStore 的示例,但在引用 lib 标记 spring 的行中的 JSP 页面中出现错误:

找不到“http://www.springframework.org/tags”的标签库描述符

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

这个库的 URL 是什么?

有什么办法可以避免直接依赖这个网址?

提前致谢

【问题讨论】:

你能告诉我下载 Spring Dependency Jar 的链接吗? 【参考方案1】:

通过右键单击配置构建路径下的JRE系统库->构建路径,将jstl-standard.jar的外部jar添加为外部jar。 它对我有用!

【讨论】:

【参考方案2】:

标签库的核心依赖:

> <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
</dependency>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
</dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

【讨论】:

【参考方案3】:

我使用的是 Spring-Boot,对我来说,在 Pom.xml 中的以下剪切粘贴有效。可能是文件未同步。

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
</dependency>

【讨论】:

【参考方案4】:

从 Internet 复制粘贴标签库 URL 时通常会出现此问题。通常,嵌入 URL http://www.springframework.org/tags 的引号 "" 可能不正确。尝试删除引号并手动键入它们。这为我解决了这个问题。

【讨论】:

【参考方案5】:

如果你想要直接链接:

https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/resources/META-INF/spring-form.tld

或来自回购:

JCenter:link

Maven 中心:link

如果你需要作为 Gradle 依赖项:

编译'org.springframework:spring-webmvc:4.1.6.RELEASE

更多关于spring-form的信息: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring-form.tld.html

【讨论】:

【参考方案6】:

我最初在从 eclipse (kepler) 部署时遇到了与 weblogic 12c 和 maven 相同的问题(从控制台部署没有错误)。

此页面上提供的其他解决方案没有帮助。

我在我的war模块的web\WEB-INF文件夹中提取了spring-webmvc jar(我在我的存储库中找到)的spring.tld spring-form.tld文件;

我做了一个全新的构建;部署(从eclipse)到weblogic 12c,测试应用程序,错误消失了;

我在删除后再次删除了 spring.tld spring-form.tld 文件;重新构建和重新部署应用程序,错误没有再次出现。

我仔细检查了这些文件是否在战争中消失了,它们确实不存在。

希望这可以帮助其他有类似问题的人...

【讨论】:

【参考方案7】:

如果您使用的是 maven,请使用此依赖项:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-taglibs</artifactId>
    <version>3.1.4.RELEASE</version>
</dependency>

【讨论】:

【参考方案8】:
    下载Spring依赖jar 放到lib文件夹路径是/WEB-INF/lib/spring.jar

    然后打开web.xml,示例代码为:

    <taglib>
      <taglib-uri>/WEB-INF/spring.tld</taglib-uri>
      <taglib-location>/WEB-INF/spring.tld</taglib-location>
    </taglib>
    

    那么taglib就指明了jar文件在你系统中的位置。

    <%@ taglib prefix="spring" uri="/WEB-INF/spring.tld" %>
    

【讨论】:

感谢您的回答。刚刚找到了相同的问题解决方案,当我看到您的回复时将在此处提供它 感谢您的回复 JLBarros。 不需要从 JAR 中提取 TLD。 这很奇怪。当我在 Eclipse 中打开项目时,项目显示此错误。当我修改 web.xml 时,错误消失了。但是鉴于 Steven Benitez 的 cmets,我收回了更改......现在没有显示错误!为什么?我不知道... 我在 web.xml 文件中添加了一个空格,保存并为我删除了错误。我只有 WEB-INF/lib 中的 spring-webmvc.jar(没有 tablib 声明)【参考方案9】:

这是另一种情况。

我们在不同的 portlet 应用程序战争中有几个 portlet,它们都使用 spring。因此,为了减少每次战争的规模,我们在 WebSphere Portal 服务器中为 spring jar 创建了共享库。

但是,我遇到了与上述相同的问题,即没有从 jsp 文件中引用 spring 表单标签。

为了解决,我将spring-form.tld文件复制到WEB-INF/目录下,重新部署war,果然奏效了。

希望对和我有类似问题的人有所帮助。

【讨论】:

【参考方案10】:

我最终配置 RAD 来构建基于 Maven 的项目,但是当我导航到使用 Spring taglib 的页面时遇到以下异常:

JSPG0047E: 找不到 uri 的标记库 http://www.springframework.org/tags 在 com.ibm.ws.jsp.translator.visitor.tagfiledep.TagFileDependencyVisitor.visitCustomTagStart(TagFileDependencyVisitor.java:76) ...

按照我配置 EAR 的方式,所有 jar 都在 EAR 中,而不是在 WAR 的 WEB-INF/lib 中。根据 JSP 2.0 规范,我相信在 WEB-INF 的所有子目录中都会搜索标签库,因此会出现问题。我的解决方案是复制 tld 文件并放在 WEB-INF/lib 或 WEB-INF 下。然后它就起作用了。

【讨论】:

【参考方案11】:

你必须为springs mvc添加依赖

在你的 pom 中添加它

<!-- mvc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

【讨论】:

【参考方案12】:

我知道这是一个老问题,但标签库http://www.springframework.org/tags 是由spring-webmvc 包提供的。使用 Maven 可以将其添加到项目中,并在 pom.xml 中添加以下行

<properties>
    <spring.version>3.0.6.RELEASE</spring.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>$spring.version</version>
    </dependency>

如果没有 Maven,只需将该 jar 添加到您的类路径中。在任何情况下都不需要直接引用 tld 文件,它会自动找到。

【讨论】:

【参考方案13】:

删除 @taglib 之间的空格对我有用:&lt;%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %&gt;

【讨论】:

我的猜测是删除空间根本没有做任何事情。除了确保 eclipse 对文件进行“更改”并重新验证之外。我认为如果您在其他地方添加/删除了一个空间,它可能会起作用 只有在我为 taglib 添加了所需的依赖项后,删除/添加空间才有效。除了重新验证之外,删除或添加空间没有任何作用。 也为我工作,但我的问题是最后的 %&gt; 在结束双引号后没有空格。【参考方案14】:

TLD 应位于spring.jar。您的应用程序不会对该 URL 有任何依赖。它只是用作标识标签库的唯一名称。他们也可以将 URI 设为“/spring-tags”,但使用 URL 是很常见的地方。

【讨论】:

以上是关于找不到springframework的标签库描述符的主要内容,如果未能解决你的问题,请参考以下文章

添加“spring-security-taglibs”后jsp中仍然报错:找不到spring security标签的标签库描述符

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

如何解决:找不到“http://java.sun.com/jsp/jstl/core”的标签库描述符[重复]

找不到 http://java.sun.com/jsf/facelets 的标记库描述符

找不到类 [org.springframework.orm.hibernate.LocalSessionFactoryBean]

JAVAEE中导入项目 发生的JSP错误