【问题标题】:Unable to read TLD "META-INF/c.tld" from JAR file无法从 JAR 文件中读取 TLD“META-INF/c.tld”
【发布时间】:2012-05-06 11:28:21
【问题描述】:

我使用 STS 插件从 Spring 模板创建了一个 Spring MVC 项目。但是,当我运行应用程序时出现错误:

org.apache.jasper.JasperException: /WEB-INF/views/home.jsp(1,63) Unable to read TLD "META-INF/c.tld" from JAR file "file:/H:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/imgateway/WEB-INF/lib/jstl-1.2.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV

有人遇到过这种问题吗?

【问题讨论】:

  • 我曾尝试使用 Tomcat 6 和 Tomcat 7 运行时,但我仍然收到该错误。

标签: java spring jsp tomcat spring-mvc


【解决方案1】:

之前在 StackOverflow 上问过几次: Unable to read TLD "META-INF/c.tld"

我曾经在博客上写过一个可能的答案:http://blog.flurdy.com/2010/07/jetty-tomcat-jsp.html

根据您的项目是否使用 maven,您需要确保 jsp-api 不包括在内,而是由 Tomcat 提供,例如:

<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>2.5</version>
   <scope>provided</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>org.apache.tomcat</groupId>
   <artifactId>jasper-el</artifactId>
   <version>6.0.26</version>
</dependency>

【讨论】:

    【解决方案2】:

    我遇到了同样的情况,我意识到错误被抛出,很明显,因为 JSTL 出了问题。由于 STS 模板依赖于 Maven2,因此您需要手动从本地 Maven2 存储库中删除 JSTL 工件

    在 Windows 7 中: 删除文件夹c:\Users\&lt;Username&gt;\.m2\repository\javax\servlet\jstl\

    在 Linux 中:删除文件夹 /home/&lt;Username&gt;/.m2/repository/javax/servlet/jstl/

    注意:这不是 STS 的错,它只是在从 Internet 下载工件时损坏。删除工件将强制 Maven2 重新下载它。最后,从网络下载的任何工件/文件都可能发生这种情况。

    【讨论】:

      【解决方案3】:

      使用 Eclipse,请确保您安装了 'Maven Integration for Eclipse WTP' 使用没有 WTP 的其他插件,eclipse 更改您的类路径并在您的 web 应用程序中包含 servlet-api.jar。

      【讨论】:

        【解决方案4】:

        不要将 javax.servlet.jsp.jar 与你的 webapp 打包,它会混淆 tomcat :P

        我们得到了完全相同的错误,从排序它的 WEB-INF/lib 中删除 javax.servlet.jsp.jar

        【讨论】:

          【解决方案5】:

          今天我也使用了同样的默认设置。这是由 servlet-api.jarjsp-api.jar,你在开发代码时可能需要这两个,所以确保它们出现在你的 pom.xml 中并提供。它看起来很适合我

          <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>servlet-api</artifactId>
              <version>2.5</version>
              <scope>provided</scope>
          </dependency>
          <dependency>
              <groupId>javax.servlet.jsp</groupId>
              <artifactId>jsp-api</artifactId>
              <version>2.1</version>
              <scope>provided</scope>
          </dependency>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-23
            • 1970-01-01
            相关资源
            最近更新 更多