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

ccl*_*eve 83 java windows

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

之前,此处和其他地方已经提出过这个问题:

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

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

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

我的猜测是这是一个特定于1.7的问题,Windows 7正在做一些不应该与注册表一起使用的东西.

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

编辑:哎呀.当我写"路径"时,我在上面写了"类路径中的第一个条目".抱歉.

eri*_*son 127

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

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

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

  • 在我的情况下,通过重命名Windows/System32文件夹中的java.exe,javaw.exe和javaws.exe也解决了该问题.然后,只有这样,java -version才会显示在JAVA_HOME和PATH中设置的版本 (17认同)
  • OP在这里.请参阅上面的编辑.是的,这解决了它.两个注意事项:首先,似乎Java安装程序确实将java.exe放在Windows\System32中.这对我来说太惊人了.其次,当您修改计算机/属性/高级系统设置/环境变量下的路径时,您必须修改**系统**路径,而不是**用户**路径.系统路径将自己放在第一位. (10认同)
  • 我将`%JAVA_HOME%\ bin`放在Windows 10的`path`变量的第一个位置并对我工作. (7认同)
  • 你救了我的一天!在PATH中Windows之前移动与JDK相关的条目解决了该问题.非常感谢! (5认同)
  • 我还将强调user237815的观点,即Java安装程序实际上将其java.exe放入Windows\System32中.这对我来说当然不直观.只有在从控制台检查"java -version"之后,我才能获得任何舒适度,Windows现在使用我想要的JDK安装而不是之前和不受欢迎的版本. (2认同)
  • 哇,这是非常烦人的追踪,谢谢Inversus!删除windows\system32中的java可执行文件解决了它. (2认同)

小智 24

在Windows 8中,您可能希望删除 C:\ProgramData\Oracle\Java\javapath 目录.

从路径

它解决了我的问题.

  • 在 Windows 10 中,其位置为:C:\Program Files (x86)\Common Files\Oracle\Java\javapath。这会自动添加到系统路径变量中。删除它并设置您的自定义路径位置。 (6认同)
  • 上述评论对 Windows 10 有帮助 (3认同)

Inv*_*sus 22

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

答案是1.6安装程序下跌java.exe,javaw.exe以及javaws.exe为我的Windows\System32文件夹(Windows 7).

我解决它通过这些文件重命名为java_wrong.exe,javaw_wrong.exejavaws_wrong.exe.只有在这样做之后才会选择正确的java版本,如JAVA_HOME和中所定义PATH.我因此重新命名了文件,因为它以一种容易逆转的方式删除了它们.

希望这可以帮助!

  • 您可以修改指定为第一个值%JAVA_HOME%\ bin的PATH变量,而不是重命名,这样它将是第一个值. (9认同)

Ken*_*ite 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按钮.)


ete*_*com 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
Run Code Online (Sandbox Code Playgroud)

在我将jdk移到第一位之后,它起了作用:

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

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


小智 5

在此处输入图片说明假设您在 JDK 8 之后安装了 JDK 10,并且在系统环境变量设置路径中,例如“C:\ProgramData\Oracle\Java\javapath”,然后通过此路径进行 Java 版本控制。它会忽略这里设置的 JAVA_HOME 甚至 jdk 1.8 路径 所以删除路径中的“C:\ProgramData\Oracle\Java\javapath”以获得 JAVA_HOME 路径的效果