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

xyb*_*rek 5 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
Run Code Online (Sandbox Code Playgroud)

有人遇到过这种问题吗?

flu*_*rdy 12

之前在StackOverflow上多次询问: 无法读取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>
Run Code Online (Sandbox Code Playgroud)


小智 6

不要用你的webapp包装javax.servlet.jsp.jar,它会混淆tomcat:P

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


Rub*_*zzo 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重新下载它.最后,它可能发生在从Web下载的任何工件/文件中.