Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 神秘的EclipseJSP验证错误_Java_Eclipse_Validation_Jsp - Fatal编程技术网

Java 神秘的EclipseJSP验证错误

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的验证是否存在问题,我是否遗漏了一些明显的内容,或者这是否表明某些内容设置不正确。尝

Eclipse(Helios)偶尔会将外观有效的JSP内容标记为有错误。当我使用标签时,它似乎经常断开。例如,在仅包含以下内容的JSP中:


某物
编译后,“问题”选项卡中显示以下错误:

  • 操作数类型和字符串不兼容 int第1行
  • javax.servlet.jsp.JspException不能 解析为类型行1
  • javax.servlet.jsp.PageContext无法 解析为类型行1

代码运行良好。JSP的验证是否存在问题,我是否遗漏了一些明显的内容,或者这是否表明某些内容设置不正确。

尝试检查您的项目类路径。看起来您的项目中没有JSP库(因此“JspException无法解析”),或者您的库版本与JSP编译器版本不同


默认情况下,库包含在部署应用程序的应用程序服务器中,因此部署时代码可以完美运行。但是,如果Eclipse内部编译器缺少库(或版本不正确),Eclipse编辑器将显示app server中不存在的错误。

根据注释,我关闭了部分JSP验证,从而修复了此问题

  • 转到“项目->属性->验证”
  • 单击“配置工作区设置…”
  • 取消选择JSP语法验证器的选项(手动和生成)
  • 我希望我遗漏了什么,并且有办法解决这个问题,但是我不得不承认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容器,并将其包含在依赖项目中

  • 创建目录,例如/home/user*/eclipse deps/并从*/tomcat/lib dir复制jsp-api.jar
  • 在Eclipse中,转到项目属性->构建路径,并创建新的“UserLibrary”,例如IdeDeps
  • 在IdeDeps库中包含/home/user/eclipse-deps/,并在所有依赖于jsp-api.jar的项目中包含用户库 (在类路径中:

  • 您可以对所有不应部署的*.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的任何版本)。这立即解决了问题。无需与其他任何事情发生冲突。:-)

    在这种情况下,也不需要关闭任何验证。

    对于我来说,当我