无法从JAR文件中读取TLD“META-INF / c.tld”

时间:2012-04-25 18:17:27

标签: java spring jsp tomcat spring-mvc

我使用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

有人遇到过这种问题吗?

5 个答案:

答案 0 :(得分:12)

之前在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>

答案 1 :(得分:6)

不要用你的webapp包装javax.servlet.jsp.jar,它会让tomcat感到困惑:P

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

答案 2 :(得分:5)

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

在Windows 7中 删除文件夹c:\Users\<Username>\.m2\repository\javax\servlet\jstl\

在Linux中:删除文件夹/home/<Username>/.m2/repository/javax/servlet/jstl/

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

今天我也有同样的默认值。这是由 servlet-api.jar 引起的错误 jsp-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>