我已经创建了一个基于Java 8开发的可执行JAR文件。双击该JAR文件即会打开。但是由于Oracle应用程序仅支持Java 6,所以我必须安装JRE 6,但是在安装JRE 6之后,我的可执行JAR文件没有打开。

我已经在Path环境变量中设置了JDK 8 bin路径。有解决这个问题的方法吗?在系统中有两个Java版本后,为什么无法打开JAR文件?

即使系统中安装了Java的两个版本6和8,也应打开JAR。

最佳答案

您面临着向后兼容性的问题。向后兼容意味着您可以在Java 8运行时上运行Java 6程序,但不能相反。

您可以在较高的配置上运行较低的配置,反之亦然

这有几个原因:

  • 字节码已版本化,JVM会检查它是否支持在.class文件中找到的版本。
  • 某些语言构造无法在字节码的早期版本中表达。
  • 较新的JRE中有新的类和方法,不适用于较旧的类和方法。

  • 如果确实需要(提示:不需要),则可以强制编译器将源视为Java的一个版本,并为另一个版本发出字节码,方法如下:
    javac -source 1.8 -target 1.6 MyClass.java
    

    您可以使用JDK 1.8将代码编译为Java 1.6字节码。只需注意以下几点:
  • -source=1.8-target=1.6编译器选项
  • 如果您使用Maven,请考虑拥有两个 pom.xml 文件,以及一个可选的父文件。

  • 来源:Can program developed with Java 8 be run on Java 7?

    07-24 09:38
    查看更多