2012-04-25 149 views
5

我使用STS插件从Spring模板创建Spring MVC项目。但是,当我运行该应用程序时出现错误:无法从JAR文件中读取TLD“META-INF/c.tld”

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

我已经尝试使用运行时的Tomcat 6和Tomcat 7,但是我仍然得到该错误。 – xybrek 2012-04-25 18:18:02

回答

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的故障,它的时候神器被同时从互联网上下载损坏恰好。删除arfifact将强制 Maven2重新下载它。最后,它可能发生在从网上下载的任何工件/文件。

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

使用Eclipse,请确保您“为Eclipse WTP Maven的一体化” 对于没有污水处理厂的其他插件的安装,Eclipse将改变你的类路径,并在您的webapps的servlet-api.jar文件。

5

不要用你的web应用打包javax.servlet.jsp.jar,它混淆了tomcat的:P

我们得到确切的同样的错误,从消除javax.servlet.jsp.jar WEB-INF/lib目录排序它

0

今天同样的默认跟我来。这是一个错误,由于您在开发代码时可能需要这两个,所以请确保它们出现在提供的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>