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

Windows忽略JAVA_HOME:如何将JDK设置为默认值?,windows,java,Windows,Java,如何说服Windows使用JDK而不是JRE 这个问题以前在这里和其他地方都被问过: 问题是Windows忽略了JAVA_HOME,它也忽略了我将JDK bin目录作为路径中的第一个条目这一事实 当我从命令行运行java-version时,它不会调用JDK1.6安装,而是运行1.7JRE 我的猜测是,这是1.7特有的问题,而Windows7在注册表中做了一些不应该做的事情 有没有办法解决这个问题 编辑:哎呀。我在上面写了“类路径中的第一个条目”,意思是“路径”。抱歉。将Path环境变量设置为所

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

这个问题以前在这里和其他地方都被问过:

问题是Windows忽略了
JAVA_HOME
,它也忽略了我将JDK bin目录作为路径中的第一个条目这一事实

当我从命令行运行
java-version
时,它不会调用JDK1.6安装,而是运行1.7JRE

我的猜测是,这是1.7特有的问题,而Windows7在注册表中做了一些不应该做的事情

有没有办法解决这个问题


编辑:哎呀。我在上面写了“类路径中的第一个条目”,意思是“路径”。抱歉。

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

Windows不会忽略任何内容。这是您的设置中的一个问题;Windows只使用您提供的功能。它没有关于
JAVA\u HOME
的专门知识

CLASSPATH
也与Windows无关。对于Windows来说,它只是一个环境变量,可以扩展到文件夹位置

检查您的
%PATH%
环境变量。正是这一点让Windows找到了一个先于另一个。路径(正如你链接到的帖子所说)应该指向
%JAVA\u HOME%\bin。同样,您链接到的帖子提供了一种使用批处理文件进行设置的方法


(对于可能不知道这一点的其他人:检查%PATH%的最简单方法是打开命令提示符并键入
echo%PATH%
。您也可以通过右键单击“开始”菜单右窗格中的
计算机
,然后选择
属性
,然后选择
高级系统设置
,以及
环境来达到该目的。)ntal变量
按钮。)

在Windows上,
java
可执行文件使用Windows注册表查找要运行的java的默认版本

要运行的
java.exe
的副本是通过使用
PATH
环境变量找到的。除非您采取步骤进行更改,否则默认情况下会在Windows目录中找到一个副本。由于此副本不在java运行时目录中,它会通过查看注册表找到一个副本


因此,您需要修改注册表,或者将所需的Java版本放在您的
路径中的Windows目录之前

我也有这个问题。我正在运行1.6,但希望构建我正在使用1.5编写的代码。我已将
Java_HOME
路径
(用户和系统)更改为无效

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

我通过将这些文件重命名为
java\u-error.exe
javaw\u-error.exe
、和
javaws\u-error.exe
,解决了这个问题。只有这样做之后,它才能按照
java\u-HOME
PATH
中定义的正确版本的java。我重新命名了这些文件,因为它们以一种容易逆转的方式被删除。


希望这有帮助!

这里还有一个额外的因素;除了java安装程序将java可执行文件放在您要求它放在的任何位置之外,在windows上,java安装程序还将其中一些可执行文件的副本放在您的windows system32目录中,因此您可能会使用安装最多的java可执行文件最近。

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

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

例如,之前的PATH环境变量是:

C:\Program Files (x86);...<other entries>;C:\dev\ant181\bin;C:\jdk1.6.0_45_32\bin
C:\ProgramFiles(x86);…;C:\dev\ant181\bin;C:\jdk1.6.0\u 45\u 32\bin
在我将jdk移到第一位之后,它成功了:

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

我猜Java 1.7的Windows installer已将其安装到路径中的其他目录中,因此首先使用它,而不是指定的自定义路径项C:\jdk1.6.0_45_32\bin;

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

从路径


它解决了我的问题。

如果您将.BAT文件用作Windows服务,我建议卸载Windows服务,并在将%JAVA_HOME%更改为指向正确的JAVA版本后重新安装它。

对于我在
'Path'
变量中的情况,添加了一个类似于“
C:\ProgramData\Oracle\JAVA\ja”的参数vapath;
”。 此位置有来自java 8的
java.exe
javaw.exe
javaws.exe
,java 8是通过Oracle的
jdk.exe
新安装的

我已将此文本从路径中删除,其中我的路径已包含
%JAVA\u HOME%\bin


现在,变量
'JAVA_HOME'
正在控制我想要的JAVA版本。

在我的例子中,我安装了JAVA 7和8(都是x64),我想重定向到JAVA 7,但一切都设置为使用JAVA 8。JAVA使用PATH环境变量:

C:\ProgramData\Oracle\Java\javapath

作为查找其文件夹运行时(隐藏文件夹)的第一个选项。此路径包含3个无法编辑的符号链接

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

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\u 21\bin

我不得不将符号链接剪切并粘贴到其他地方,这样java就找不到它们,我可以在以后恢复它们

在设置JAVA_HOME和JRE_HO之后
C:\Program Files\Java\<your new jdk version>\bin