Java 神秘的EclipseJSP验证错误
Eclipse(Helios)偶尔会将外观有效的JSP内容标记为有错误。当我使用标签时,它似乎经常断开。例如,在仅包含以下内容的JSP中:Java 神秘的EclipseJSP验证错误,java,eclipse,validation,jsp,Java,Eclipse,Validation,Jsp,Eclipse(Helios)偶尔会将外观有效的JSP内容标记为有错误。当我使用标签时,它似乎经常断开。例如,在仅包含以下内容的JSP中: 某物 编译后,“问题”选项卡中显示以下错误: 操作数类型和字符串不兼容 int第1行 javax.servlet.jsp.JspException不能 解析为类型行1 javax.servlet.jsp.PageContext无法 解析为类型行1 代码运行良好。JSP的验证是否存在问题,我是否遗漏了一些明显的内容,或者这是否表明某些内容设置不正确。尝
某物
编译后,“问题”选项卡中显示以下错误:
- 操作数类型和字符串不兼容 int第1行
- javax.servlet.jsp.JspException不能 解析为类型行1
- javax.servlet.jsp.PageContext无法 解析为类型行1
代码运行良好。JSP的验证是否存在问题,我是否遗漏了一些明显的内容,或者这是否表明某些内容设置不正确。尝试检查您的项目类路径。看起来您的项目中没有JSP库(因此“JspException无法解析”),或者您的库版本与JSP编译器版本不同
默认情况下,库包含在部署应用程序的应用程序服务器中,因此部署时代码可以完美运行。但是,如果Eclipse内部编译器缺少库(或版本不正确),Eclipse编辑器将显示app server中不存在的错误。根据注释,我关闭了部分JSP验证,从而修复了此问题
-javax.servlet.jsp.*需要jspapi.jar
-javax.servlet.http.*需要ServletAPI.jar
您需要在项目设置中将这些库添加到Java构建路径。这些库可以在tomcat/lib目录(对于tomcat 6.0)中找到。我也遇到了同样的问题,并最终通过切换(使用Maven)到servlet api的2.3版本使其正常工作:
javax.servlet
servlet api
2.3
假如
显然,2.4及更高版本不再内置javax.servlet.jsp。如果您仍然想使用2.4或更高版本,您可以在另一个包中找到该库。我找到了解决此错误的方法。 将其添加到Maven依赖项(pom.xml)中:
org.apache.tomcat
jsp api
6.0.32
假如
如果您觉得它有用,请发表评论,因为它对我很有帮助。不应该部署的eclipse依赖项解决方案是添加UserLibrary容器,并将其包含在依赖项目中
您可以对所有不应部署的*.jar执行此操作,但eclipse出于验证目的需要它。您需要在类路径中包含jap-api.jar。将
jsp-api.jar
添加到构建类路径中可以解决此问题<代码>jsp api.jar位于tomcat 5.x的公共\lib
下我在切换到Maven(使用m2e)时也看到了相同的问题,出现了类似“javax.servlet.http无法解决”的错误,以及一些Spring标记未定义的警告。最后,我发现这是因为我的构建配置中的java版本(v1.6)与facets配置(v1.7)中的java版本不同。将v1.7更改为v1.6后,问题消失 我也遇到了同样的问题,问题是jspapi
库,您可以将依赖项添加到您的pom(如其他答案所述),或者您也可以添加目标运行时,eclipse将自动将该库添加到您的类路径:Project -> Properties -> Targeted Runtimes
并选择您的服务器。对于Tomcat 7.0.x,您需要在pom中提供以下内容
7.0.28
org.apache.tomcat
tomcat jsp api
${org.apache.tomcat.version}
假如
这是一个老问题,但我想我可能会提到,我在Mac OS X上的Juno中也会遇到这个问题,尤其是在我从外部更改文件,然后在Eclipse中刷新项目之后。在各种奇怪的地方加下划线,甚至在JSP注释中的单词中间加下划线
(很可能?!)与一周前修复的问题有关吗?我也有同样的问题,但是jsp-api.jar和servlet-api.jar都已经在构建路径中了。禁用JSP语法验证器也没有帮助
相反,我必须禁用JSP内容验证程序,使语法验证程序处于启用状态。我的JSP中仍然有带下划线的代码,但没有表示编译错误的红十字,这就是重点:)一个更简单的方法是
选择项目->属性->Java构建路径->库选项卡
选择添加库。从中选择服务器运行时
。它将列出您配置的所有服务器运行时。从中选择与项目关联的服务器运行时
这将重建并重新验证项目,所有这些重影错误将被删除
希望这能有所帮助。正如许多人提到的,问题在于构建路径和缺少库。我找到了一个非常简单的解决这个构建路径问题的方法。以下是解决方案: 在eclipse中的“Java构建路径”下,转到“订单和导出”选项卡,并确保选中了“ApacheTomcat v7.0”库(或与eclipse一起安装的Tomcat的任何版本)。这立即解决了问题。无需与其他任何事情发生冲突。:-) 在这种情况下,也不需要关闭任何验证。对于我来说,当我