5

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

有人遇到过这种问题吗?

4

5 回答 5

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>
于 2012-04-25T19:10:19.473 回答
6

不要将 javax.servlet.jsp.jar 与你的 webapp 打包,它会混淆 tomcat :P

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

于 2012-12-12T08:42:08.810 回答
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 下载工件时损坏。删除工件将强制Maven2 重新下载它。最后,从网络下载的任何工件/文件都可能发生这种情况。

于 2012-05-24T17:24:17.883 回答
1

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

于 2012-08-31T13:31:56.410 回答
0

今天我也有同样的默认设置。这是由servlet-api.jarand 引起的错误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>
于 2015-11-07T00:35:02.380 回答