Windows忽略JAVA_HOME:如何将JDK设置为默认值?

我如何说服Windows使用JDK而不是JRE?

这个问题已经在这里和其他地方被问过了:

如何设置默认的Java安装/运行时(Windows)?

麻烦的是,Windows忽略了JAVA_HOME,而且也忽略了我将JDK bin目录作为path中的第一个条目的事实。

当我从命令行运行java -version时,不是调用我的JDK 1.6安装,而是运行1.7 JRE。

我的猜测是,这是一个特定于1.7的问题,Windows 7正在做一些它不应该与registry。

有想法该怎么解决这个吗?

编辑 :哎呀。 我上面写了“classpath里的第一个条目”,当时我的意思是“path”。 抱歉。

在Windows上, java可执行文件使用Windowsregistry来查找要运行的Java的默认版本。

运行java.exe的副本是通过使用PATH环境variablesfind的。 除非您采取措施更改此设置,否则默认情况下会在Windows目录中find副本。 由于此副本不在Java运行时目录中,因此通过查看registry来查找它。

所以,你需要修改registry,或者把你想要的Java版本放在PATH的Windows目录下。

我也有这个问题。 我正在运行1.6,但想要构build我正在使用1.5的代码。 我已经改变了JAVA_HOME和PATH(用户和系统)无济于事。

答案是1.6的安装程序将java.exe,javaw.exe和javaws.exe放入我的Windows \ System32文件夹(Windows 7)中。

我通过将这些文件重命名为java_wrong.exe,javaw_wrong.exe和javaws_wrong.exe来解决这个问题。 只有这样做之后,它才能获得JAVA_HOME和PATH中定义的正确版本的java。 因此,我重新命名了这些文件,因为这些文件是以一种简单可逆的方式删除的。

希望这可以帮助!

Windows不会忽略任何东西。 这是您的设置的问题; Windows只是使用你提供的。 对JAVA_HOME没有特别的了解。

CLASSPATH也与Windows无关。 到Windows它只是一个环境variables被扩展到文件夹位置。

检查你的%PATH%环境variables。 这是使Windows在另一个之前find的东西。 path(如链接到的post)应该指向%JAVA_HOME%\bin;<remainder of path> 。 再一次,你链接的post给了你一个使用batch file设置的方法。

(对于其他人可能不知道这一点:检查%PATH%最简单的方法是打开命令提示符并inputecho %PATH% 。也可以通过右键单击开始菜单右窗格中的Computer然后select“ Properties ,“ Advanced System Settings和“ Environmental Variablesbutton。)

在Windows 8中,您可能需要删除C:\ProgramData\Oracle\Java\javapath目录。

从path

它解决了我的问题。

我遇到过同样的问题。 我安装了一堆Java版本,出于某种原因,使用Java 1.7而不是Java 1.6,尽pipe我在path中指定使用1.6(C:\ jdk1.6.0_45_32 \ bin)。

我必须移动我想要使用的JDK的path(1.6)作为PATH环境variables中的第一个条目,以确保Windows使用1.6而不是1.7。

所以,例如,之前的PATH环境variables是:

 C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin 

在我把jdk移到第一个之后,它工作了:

 C:\jdk1.6.0_45_32\bin;C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin 

我猜Java 1.7的Windows安装程序把它安装到PATH中已经存在的其他目录中,因此首先使用而不是指定的自定义PATH条目C:\ jdk1.6.0_45_32 \ bin;

将Path环境variables设置为所需的jdk / bin目录

对于我在'Path'variables中的情况,有一个像“ C:\ProgramData\Oracle\Java\javapath; ”。 这个位置是从java 8的java.exejavaw.exejavaws.exe ,它是通过Oracle的jdk.exe新安装的。

我从path中删除了这个文本,其中我的path已经具有%JAVA_HOME%\bin

现在,variables'JAVA_HOME'正在控制我想要的Java版本。

在我的情况下,我安装了Java 7和8(两个x64),我想redirect到Java 7,但是一切都设置为使用Java 8. Java使用PATH环境variables:

C:\ ProgramData \ ORACLE \的Java \ javapath

作为查找文件夹运行时间的第一个选项(是隐藏文件夹)。 该path包含3个不能编辑的符号链接。

在我的电脑中,PATH环境variables如下所示:

C:\ ProgramData \ Oracle \ Java \ javapath; C:\ Windows \ System32; C:\ Program Files \ Java \ jdk1.7.0_21 \ bin;

就我而言,它应该是这样的:

C:\ Windows \ System32; C:\ Program Files \ Java \ jdk1.7.0_21 \ bin;

我不得不剪切和粘贴符号链接到其他地方,所以Java找不到它们,我可以在以后恢复它们。

将JAVA_HOME和JRE_HOME环境variables设置为所需的java文件夹的运行时(在我的情况下是Java 7)之后,命令java -version应该显示所需的java运行时。 我说没有必要乱用registry。

在Win7 x64上testing。

这里有一个额外的因素。 除了java安装程序放在任何你要求把它们放在窗口上的java可执行文件之外,java安装程序还会把这些可执行文件的副本放在你的windows system32目录下,所以你可能会用到每一个java可执行文件最近安装。

以防万一,如果您使用.BAT文件作为Windows服务,我会build议卸载Windows服务,并重新安装后,将%JAVA_HOME%更改为指向正确的Java版本。

我安装了Java 7和8,我想redirect到Java 7,但在我的cmd提示窗口中的Java版本显示Java 8。
在最后添加了Java 7 bin目录path( C:\ Program Files \ Java \ jdk1.7.0_10 \ bin )到PATHvariables,但是没有解决,并显示了Java 8.所以我改变了Java 7path到path值和它的工作。
打开一个新的cmd提示窗口,并检查我的Java版本,现在它显示Java 7