如何说服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正在做一些不应该使用注册表的事情。
有关如何解决此问题的任何想法?
修改:糟糕。当我写“路径”时,我在上面写了“类路径中的第一个条目”。遗憾。
答案 0 :(得分:120)
在Windows上,java
可执行文件使用Windows注册表找到要运行的默认Java版本。
使用java.exe
环境变量找到要运行的PATH
的副本。除非您采取措施进行更改,否则默认情况下会在Windows目录中找到一个副本。由于此副本不在Java运行时目录中,因此它通过查看注册表找到一个。
因此,您需要修改注册表,或者在PATH
中的 Windows目录之前放置您想要的Java版本。
答案 1 :(得分:21)
我也有这个问题。我正在运行1.6但是想要构建我正在使用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。我因此重新命名了这些文件,因为它以一种容易逆转的方式删除了它们。
希望这有帮助!
答案 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.exe
,javaw.exe
和javaws.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)
假设您已经在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\bin
和 C:\ProgramData\Oracle\Java\javapath
我所做的是像这样将jdk更改为%JAVA_HOME%\bin
并将C:\ProgramData\Oracle\Java\javapath
的目录(javapath
)重命名为javapath1
并解决了我的问题。