我得到的错误是:
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正确编译,我该怎么办?
答案 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 。