使用jdk 8后编译JSP时出错

时间:2016-03-14 13:37:07

标签: java jsp

我得到的错误是:

org.apache.jasper.JasperException: JBWEB004062: Unable to compile class for JSP: 

JBWEB004061: An error occurred at line: 1 in the generated java file
The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from    required .class files

我在互联网上阅读了很多帖子,争论同样的问题,他们都试图解决它改变eclipse版本,关闭eclipse并重新启动它,或者在类路径中定义JDK的工作区默认版本。

我尝试了前两个选项并且它们不起作用,但不是第三个,因为我必须使用jdk 8而不是7。

在我使用JDK 7之前,一切正常。 那么,为了使用jdk 8正确编译,我该怎么办?

3 个答案:

答案 0 :(得分:0)

请记住,在使用Eclipse时,您有时只使用JDK。 Eclipse嵌入式编译器主要与JDK javac可执行文件兼容;除了它是一个不同的编译器(有时是可检测的),因为它有一堆钩子和重写,以提供Eclipse中流行的编辑器反馈。

我会考虑在命令行上编译JSP,以简化问题是由于编译环境不匹配造成的。在命令行中,您将只使用Java工具,因此Eclipse IDE可能无法完全按照标准工作的担忧消失。

答案 1 :(得分:0)

[解决] 看来我使用的是旧版本的ecj(ecj3.7.2redhat-1.jar)。使用最新版本(ecj-4.3.1.jar),它工作正常。

答案 2 :(得分:0)

我在jboss-5.1.0.GA和jboss-eap-5.2中解决了这个问题,该系统需要在两个平台上都可以运行。您需要替换目录 /server/default/deploy/jbossweb.sar 中的文件 jasper-jdt.jar ecj-4.3.1.jar 的jboss的“ strong”,并将其重命名为jasper-jdt.jar。 (观察:在应用更改之前备份原始jasper-jdt.jar)。

所以: 将jasper-jdt.jar替换为ecj-4.3.1.jar,将 ecj-4.3.1.jar 重命名为 jasper-jdt.jar