2012-04-25 153 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>