神秘的Eclipse JSP验证错误

wor*_*pet 49 java eclipse validation jsp

Eclipse(Helios)偶尔会将有效的JSP内容标记为有错误.当我使用<c:if>标签时,它似乎经常会中断.例如,在仅包含此内容的JSP中:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>

<c:if test="${1 == 1}">
something
</c:if>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

编译后,"问题"选项卡中显示以下错误:

  • 不兼容的操作数类型String和int第1行
  • 无法将javax.servlet.jsp.JspException解析为类型行1
  • javax.servlet.jsp.PageContext无法解析为类型行1

代码运行正常.对JSP的验证是否有问题,我是否遗漏了一些明显的问题,或者这表明某些内容未正确设置.

Mar*_*rio 47

好吧,我找到了如何解决这个错误.将其添加到Maven依赖项(pom.xml):

<!-- dependency to fix JSPServletException -->
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>jsp-api</artifactId>
        <version>6.0.32</version>
        <scope>provided</scope>               
    </dependency>
Run Code Online (Sandbox Code Playgroud)

如果您发现它有用,请发表评论,就像它帮助我一样.

  • @MarkJosephDelRosario,这对[不同的问题](http://stackoverflow.com/q/8879314/517483)也很有用. (2认同)
  • 适合我,需要一个项目 - >更新pom后清理 (2认同)

wor*_*pet 38

基于这些评论,我最终关闭了部分JSP验证,修复了这个问题.

  1. 转到"项目 - >属性 - >验证".
  2. 单击"配置工作区设置...".
  3. 取消选择JSP Syntax Validator的选项(手动和构建).

我希望我错过了一些东西并且有办法解决这个问题,但我不得不承认JSP验证是垃圾.

  • JSP文件很好,我改变了一些随机的文本(甚至不是JSTL或JSP代码),突然间我随处可见小红色波浪线,在随机的地方(甚至没有强调他们抱怨的代码).当然,Rational Application Developer不会让我将整个应用程序部署到服务器,因为它认为存在错误.如此愚蠢.谢谢你的解决方案. (3认同)

小智 21

我有同样的问题,问题是jsp-api库,您可以将依赖项添加到您的pom(如其他答案中所述),或者您也可以添加目标运行时,eclipse会自动将该库添加到您的类路径:

Project -> Properties -> Targeted Runtimes 
Run Code Online (Sandbox Code Playgroud)

并选择您的服务器.


小智 5

为了修复:
- javax.servlet.jsp.*需要jsp-api.jar
- javax.servlet.http.*需要servlet-api.jar

您需要在项目设置中将这些库添加到Java Build路径.这些库可以在tomcat/lib目录中找到(对于Tomcat 6.0).