windows忽略java_home:如何将jdk设置为默认值?

t30tvxxf  于 2021-08-25  发布在  Java
关注(0)|答案(16)|浏览(329)

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

izkcnapc

izkcnapc1#

在windows上 java 可执行文件使用windows注册表查找要运行的java的默认版本。
副本 java.exe 通过使用 PATH 环境变量。除非您采取步骤进行更改,否则默认情况下,将在windows目录中找到一个副本。由于此副本不在java运行时目录中,因此它通过查看注册表来定位一个副本。
因此,您需要修改注册表,或者将所需的java版本放在您的windows目录之前 PATH .

omqzjyyz

omqzjyyz2#

在windows 8中,您可能要删除 C:\ProgramData\Oracle\Java\javapath 目录
从路径
它解决了我的问题。

zpgglvta

zpgglvta3#

我也有这个问题。我正在运行1.6,但希望构建我正在使用1.5开发的代码。我改变了主意 JAVA_HOMEPATH (用户和系统)无效。
答案是1.6版本的安装程序已删除 java.exe , javaw.exe ,及 javaws.exe 进入我的 Windows\System32 文件夹(windows 7)。
我通过将这些文件重命名为 java_wrong.exe , javaw_wrong.exe ,及 javaws_wrong.exe . 只有在这样做之后,它才能获取中定义的正确版本的java JAVA_HOMEPATH . 我重新命名了这些文件,因为它以一种容易逆转的方式删除了它们。
希望这有帮助!

kuuvgm7e

kuuvgm7e4#

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 按钮。)

72qzrwbm

72qzrwbm5#

我也有同样的问题。我安装了很多java版本,出于某种原因,使用了java 1.7而不是java 1.6,尽管我在路径中指定使用1.6(c:\jdk1.6.0\u 45\u 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 installer已经将它安装到路径中的其他目录中,因此首先使用它,而不是指定的自定义路径条目c:\jdk1.6.0_45_32\bin;

fwzugrvs

fwzugrvs6#


假设您在jdk 8之后安装了jdk 10,并在系统环境变量中设置了路径“c:\programdata\oracle\java\javapath”,然后通过该路径进行java版本控制。它将忽略java_home,甚至这里设置的JDK1.8路径,所以删除路径中的“c:\programdata\oracle\java\javapath”以获得java_home路径的效果

mum43rcc

mum43rcc7#

为了我的案子 'Path' 变量添加了一个参数,如' C:\ProgramData\Oracle\Java\javapath; '. 这个地点有 java.exe , javaw.exejavaws.exe 来自通过新安装的java 8 jdk.exe 来自甲骨文。
我已将此文本从路径中删除,我的路径已包含此文本 %JAVA_HOME%\bin 用它。
现在,变量 'JAVA_HOME' 正在控制我想要的java版本。

kognpnkq

kognpnkq8#

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

g2ieeal7

g2ieeal79#

我安装了Java7和Java8,我想重定向到Java7,但是我的cmd提示符窗口中的java版本显示Java8。
在末尾的path变量中添加了java 7-bin目录路径(c:\program files\java\jdk1.7.0\u 10\bin),但没有成功,显示了java 8。因此,我将java 7路径更改为路径值的起始位置,它成功了。
打开了一个新的cmd提示符窗口,检查了我的java版本,现在显示的是Java7

a0zr77ik

a0zr77ik10#

在我的例子中,我安装了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:\ProgramFiles\java\jdk1.7.0\U 21\bin;
在我的例子中,应该是这样的:
c:\windows\system32;c:\ProgramFiles\java\jdk1.7.0\U 21\bin;
我不得不将符号链接剪切并粘贴到其他地方,这样java就找不到它们,我可以在以后恢复它们。
将java_home和jre_home环境变量设置为所需java文件夹的运行时(在我的示例中是java 7)后,命令 java -version 应该显示所需的java运行时。我说没有必要弄乱登记处。
在win7 x64上测试。

ukdjmx9f

ukdjmx9f11#

这个问题可能是因为系统中安装了早期版本的java。首先仔细检查您的环境变量,删除所有与java以前版本相关的环境变量,并替换这些路径

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

yvgpqqbh12#

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

w8biq8rn

w8biq8rn13#

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

lx0bsm1f

lx0bsm1f14#

经过一段时间的努力和研究,我终于按照以下步骤解决了这个问题:
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
最后,我在cmd中用“java-version”检查了java的默认版本,它成功了!

bakd9h0s

bakd9h0s15#

我也有同样的问题,在用户环境变量设置中,我正确地配置了java_home和path,但它不起作用。当我更新我的系统环境变量时,它就开始工作了。

相关问题