我们可以在Windows上安装两个版本的Java JDK吗?

时间:2019-04-01 05:09:41

标签: java java-8

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

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

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

4 个答案:

答案 0 :(得分:10)

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

  

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

原因有很多:

  1. 字节码已经过版本控制,JVM会检查它是否支持在.class文件中找到的版本。
  2. 某些语言构造无法在字节码的早期版本中表达。
  3. 较新的JRE中有一些新的类和方法,它们不能与较旧的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?

答案 1 :(得分:2)

  

短期内,
  答案是。由于两个JDK文件都以jar文件的形式下载,因此可以同时下载这两个jar文件。在两个Java版本之后不能打开的原因是@Elliott所说的:“在系统中,Java 6无法运行Java 8编译的代码,您应该得到一个错误。”确实是这样,但问题是如何在一台计算机上使用多个版本的JDK。

然后我们要继续长期发展,
棘手的事情是管理这些多个JDK和IDE。如果我只使用Eclipse编译代码,这是小菜一碟,因为IDE允许我配置Java运行时的多个版本。不幸的是(或者幸运的是),我必须使用命令行/ shell来构建我的代码。因此,重要的是,PATH和其他相关的环境变量(例如JAVA_HOME)中必须存在正确的JDK版本。

每次我想在JDK之间切换时,手动修改环境变量并不是一件容易的事。但是,多亏了Windows Powershell,我才能够编写一个脚本,可以帮我完成繁重的工作。

基本上,您想要实现的是设置PATH变量以添加Java bin文件夹并设置JAVA_HOME环境变量,然后启动正确的Eclipse IDE。而且,我想用一个命令来做到这一点。开始吧。

  1. 打开Windows Powershell。
  2. 我更喜欢在个人资料文件中编写自定义Windows脚本,以便每次打开外壳程序时都可以运行它。要编辑配置文件,请运行以下命令:notepad.exe $profile-$ profile是指向您的配置文件的特殊变量。
  3. 将以下脚本写入配置文件并保存。
  

function myIDE {$ env:Path =“ C:vraajavajdk7bin;” $ env:JAVA_HOME =“ C:vraajavajdk7” C:vraaideeclipseeclipse设置位置C:vraaworkspacemyproject play}

function officeIDE{
$env:Path  = "C:vraajavajdk6bin;"
$env:JAVA_HOME = "C:vraajavajdk6"
C:officeeclipseeclipse
}
  1. 关闭并重新启动Powershell。
  2. 现在,您可以发出命令myIDE,该命令将设置适当的PATH和环境变量,然后启动Eclipse IDE。

如您所见,有两个功能具有不同的配置。只需从Powershell命令行(myIDE)调用要启动的函数名称即可。

如果有任何问题,请在下面发表评论!

答案 2 :(得分:1)

我不确定此解决方案是否可行。 尝试运行命令java -version并查看它是否返回java 6或8路径。还尝试将JDK 8的路径作为JAVA_HOME变量提供,并将其添加到类似path =%JAVA_HOME%/ bin的路径中,并查看其是否有效。如果将Java 6作为Java版本,请尝试使用上述方法,然后安装JRE 6

答案 3 :(得分:1)

大家好,谢谢您的回复。我保留了java6并重新安装了java8,现在表格和jar都可以使用!