我们正在尝试将我们的应用程序从Java 1.6迁移到Java 1.8。我能够在WL11上成功构建和部署EAR,但是当我尝试访问应用程序时,我收到此错误:
javax.servlet.ServletException: weblogic.servlet.jsp.CompilationException: Failed to compile JSP /jsp/login/SuperAdminProgramView.jsp
SuperAdminProgramView.jsp:24:18: The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files
<%@ page import="com.gxs.ncm.mvc.model.valueobject.*" %>
任何人都可以知道如何使用Java 1.8在Web逻辑11上解决此问题。什么是使其适用于Java 1.8的解决方案。 Web逻辑是使用Java 1.8编译jsp还是使用在安装Web Logic期间选择的Java版本?
答案 0 :(得分:1)
不幸的是,Eclipse Ganymede已经过时,无法与Java 1.8一起使用。您需要更新到Juno或更高版本;理想情况下,你会使用Luna,因为它是更晚和更大的Eclipse。
您可以找到最新的Eclipse下载here,或者,如果您更愿意使用Eclipse Juno或Kepler,则可以使用说明here 1获取here 修补它以使用Java 8运行。
1 我找不到关于如何升级的官方Eclipse教程,但StackOverflow看起来还不错。
答案 1 :(得分:0)
使用Eclipse Luna它将解决您的问题,因为它与Java 8兼容。
答案 2 :(得分:0)
对我来说,解决方案是使用更新的ecj jar文件,ecj-4.4.2.jar
答案 3 :(得分:0)
当WebLogic发现没有关联类的JSP或使用不同WebLogic版本编译的关联类时,它会尝试在部署期间重新编译它。
此错误是由WebLogic 11g JSP编译器与JDK 1.8之间的不兼容引起的。
实际上,Oracle WebLogic 11g不支持JDK 1.8。见官方certification matrix from Oracle site。
WebLogic Server 12.1.3中引入了对JDK 1.8的支持(参见WLS 12.1.3 - What's New - Supported Configurations)
我找到的解决方法是使用JDK 1.7预编译jsp页面,使用同一WebLogic版本的weblogic.appc实用程序预编译。这可以避免在部署期间重新编译,并跳过仅与编译器相关的特定错误/不兼容性。但我建议降级到JDK 1.7或将WebLogic升级到12.1.3或更高版本,因为缺少Oracle的官方支持。