我使用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
有人遇到过这种问题吗?
答案 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>