我已经创建了一个基于Java版本8开发的可执行JAR文件。双击该JAR文件即可打开。但是由于Oracle应用程序仅支持Java 6,所以我不得不安装JRE 6,但是在安装JRE 6之后,我的可执行JAR文件没有打开。
我已经在Path环境变量中设置了JDK 8 bin路径。有解决这个问题的方法吗?为什么在系统中有两个Java版本后,JAR文件仍无法打开?
即使系统中安装了Java的两个版本6和版本8,JAR也应打开。
答案 0 :(得分:10)
您正面临向后兼容性问题。向后兼容意味着您可以在Java 8运行时上运行Java 6程序,但不能相反。
您可以在较高的配置上运行较低的配置,反之亦然
原因有很多:
如果您确实想要(提示:您不想要),则可以强制编译器将源视为Java的一个版本,并使用另一种版本发出字节码,例如:
javac -source 1.8 -target 1.6 MyClass.java
您可以使用JDK 1.8将代码编译为Java 1.6字节码。只需注意以下事项:
-source=1.8
和-target=1.6
编译器选项答案 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。而且,我想用一个命令来做到这一点。开始吧。
notepad.exe $profile
-$ profile是指向您的配置文件的特殊变量。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
}
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都可以使用!