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

时间:2011-03-30 21:57:04

标签: windows java

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

此问题曾在此处及其他地方提出过:

How do I set the default Java installation/runtime (Windows)?

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

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

我的猜测是这是一个特定于1.7的问题,Windows 7正在做一些不应该使用注册表的事情。

有关如何解决此问题的任何想法?

修改:糟糕。当我写“路径”时,我在上面写了“类路径中的第一个条目”。遗憾。

16 个答案:

答案 0 :(得分:120)

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

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

因此,您需要修改注册表,或者在PATH中的 Windows目录之前放置您想要的Java版本。

答案 1 :(得分:21)

我也有这个问题。我正在运行1.6但是想要构建我正在使用1.5的代码。我已将JAVA_HOMEPATH(用户和系统)都更改为无效。

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

我通过将这些文件重命名为java_wrong.exejavaw_wrong.exejavaws_wrong.exe来解决这个问题。只有在这样做之后才会选择JAVA_HOMEPATH中定义的正确版本的java。我因此重新命名了这些文件,因为它以一种容易逆转的方式删除了它们。

希望这有帮助!

答案 2 :(得分:21)

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

来自路径

它解决了我的问题。

答案 3 :(得分:12)

Windows不会忽略任何内容。这是您的设置问题; Windows只使用您提供的内容。它没有JAVA_HOME的特殊知识。

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

检查您的%PATH%环境变量。这就是让Windows在另一个之前找到一个的原因。路径(如您所链接的帖子)应指向%JAVA_HOME%\bin;<remainder of path>。同样,您链接的帖子为您提供了使用批处理文件设置此项的方法。

(对于可能不知道这一点的其他人:检查%PATH%的最简单方法是打开命令提示符并键入echo %PATH%。您也可以通过右键单击Computer来实现在“开始”菜单的右侧窗格中,选择Properties,然后选择Advanced System Settings,然后选择Environmental Variables按钮。)

答案 4 :(得分:6)

我有同样的问题。我安装了一堆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

在我将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;

答案 5 :(得分:2)

对于'Path'变量中的案例,添加的参数类似于“C:\ProgramData\Oracle\Java\javapath;”。 此位置来自java 8中的java.exejavaw.exejavaws.exe,它是通过Oracle jdk.exe新安装的。

我已从Path中删除了此文本,其中我的路径已经使用%JAVA_HOME%\bin

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

答案 6 :(得分:2)

我安装了Java 7和8,我想重定向到java 7,但我的cmd提示窗口中的java版本显示了Java 8. 最后将Java 7 bin目录路径( C:\ Program Files \ Java \ jdk1.7.0_10 \ bin )添加到PATH变量,但没有解决并显示Java 8.所以我更改了Java 7路径到路径值的起始并且它起作用。
打开一个新的cmd提示窗口并检查我的java版本,现在它显示了Java 7

答案 7 :(得分:2)

enter image description here假设您已经在JDK 8之后安装了JDK 10,并且在系统环境变量集路径中安装了“C:\ ProgramData \ Oracle \ Java \ javapath”,然后通过此路径进行Java版本控制。它会忽略JAVA_HOME甚至jdk 1.8路径设置在这里 因此,在路径中删除“C:\ ProgramData \ Oracle \ Java \ javapath”以获得JAVA_HOME路径的效果

答案 8 :(得分:1)

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

答案 9 :(得分:1)

在我的情况下,我安装了Java 7和8(都是x64),我想重定向到java 7但是一切都设置为使用Java 8. Java使用PATH环境变量:

  

C:\ ProgramData \甲骨文\爪哇\ javapath

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

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

  

C:\ ProgramData \甲骨文\爪哇\ javapath; C:\ Windows \ System32下; C:\程序   文件\爪哇\ jdk1.7.0_21 \ BIN;

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

  

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

我不得不将符号链接剪切并粘贴到其他地方,因此java无法找到它们,我可以稍后恢复它们。

将JAVA_HOME和JRE_HOME环境变量设置为所需的java文件夹后#39;运行时(在我的例子中是Java 7),命令java -version应该显示你想要的java运行时。我注意到没有必要弄乱注册表。

在Win7 x64上测试。

答案 10 :(得分:0)

这里有一个额外的因素;除了java安装在你要求它放置它们的地方放置的java可执行文件之外,java安装程序还将一些可执行文件的副本放在你的windows system32目录中,所以你可能会使用每个java可执行文件都是最近安装。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

此问题可能是由于系统中安装了Java的早期版本所致。 首先,请仔细检查您的环境变量,并删除与先前版本的JAVA相关的所有环境变量,并将这些路径替换为

C:\Program Files\Java\<your new jdk version>\bin

答案 13 :(得分:0)

经过一段时间的努力并进行了研究之后,我终于按照以下步骤解决了该问题:

1)安装jdk版本12
2)在系统变量中创建新变量
3)命名为JAVA_HOME并提供jdk安装路径
4)在路径中添加此变量并将其移到顶部。
5)转到C:\ Program Files(86)\ Common Files \ Oracle \ Java \ javapath,并用路径pathtojavajdk / bin文件夹中具有相同名称的对应文件替换java.exe和javaw.exe

最后,我使用“ java -version”在cmd中检查了Java的默认版本,并且可以正常工作!

答案 14 :(得分:0)

我遇到了同样的问题,在用户环境变量设置中,我已经正确配置了JAVA_HOME和PATH,但是没有用。当我更新系统环境变量时,它开始起作用。

答案 15 :(得分:0)

我遇到了同样的问题。我有一个 8.11 的 Java 版本。我的路径中有这两个:C:\Program Files\Java\jdk1.8.0_51\binC:\ProgramData\Oracle\Java\javapath

我所做的是像这样将jdk更改为%JAVA_HOME%\bin并将C:\ProgramData\Oracle\Java\javapath的目录(javapath)重命名为javapath1并解决了我的问题。