将Windows配置为使用32位JRE而不是64位JRE

10

在我的系统中,我已经安装了64位的Java 1.7,位于这里:C:\Program Files\Java\jdk1.7.0_40

并且

我还安装了32位的Java 1.7,位于这里:C:\Program Files (x86)\Java\jdk1.7.0_02

当我在CMD中输入java -version命令时,它会显示:

C:\Users\Meraman>java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

我想将Java版本更改为32位。

我尝试过以下方法:

  1. path变量中删除64位安装的路径,但CMD在运行java -version命令时仍显示相同的输出。

  2. 我只指定了32位安装路径在path变量中,但CMD在运行java -version命令时仍显示相同的输出。

  3. 然后添加了JAVA_HOME变量,值为C:\Program Files (x86)\Java\jdk1.7.0_02,但CMD仍显示相同的输出。

  4. 在Java控制面板->Java->Java Runtime Environment Settings->User中,我完成了向导以查找32位Java并启用了该选项,并禁用了64位安装,但CMD仍显示相同的输出。

请帮助我解决这个问题,我想在不卸载64位程序的情况下将Java更改为32位。

更多信息:

每次更改path或Java控制面板后,我都重新启动了CMD。

我将pathJAVA_HOME作为系统变量,没有任何用户变量。

编辑

我已删除path变量中的所有Java路径设置,删除了JAVA_HOME变量,但CMD仍显示64位。

C:\Users\Meraman>echo %PATH%
C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\Python33\;C:\Program Files (
x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system
32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.
0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files
(x86)\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL S
erver\90\Tools\binn\;C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\;C:
\Program Files (x86)\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\
Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\;

C:\Users\Meraman>javac -version
'javac' is not recognized as an internal or external command,
operable program or batch file.

C:\Users\Meraman>java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) 64-Bit Server VM (build 24.0-b56, mixed mode)

C:\Users\Meraman>echo %JAVA_HOME%
%JAVA_HOME%

C:\Users\Meraman>

编辑 - 这个方法有效:

将path变量中的第一个路径设置为32位java即可解决问题。

下面是CMD的输出信息:

C:\Users\Meraman>echo %PATH%
C:\Program Files (x86)\Java\jdk1.7.0_02\bin;C:\oraclexe\app\oracle\product\10.2.
0\server\bin;C:\Python33\;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program F
iles (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wb
em;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Techno
logies\ATI.ACE\Core-Static;C:\Program Files (x86)\Microsoft SQL Server\80\Tools\
Binn\;C:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program File
s (x86)\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL S
erver\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual
 Studio 8\Common7\IDE\PrivateAssemblies\;

C:\Users\Meraman>javac -version
javac 1.7.0_02

C:\Users\Meraman>java -version
java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) Client VM (build 22.0-b10, mixed mode, sharing)

C:\Users\Meraman>echo %JAVA_HOME%
%JAVA_HOME%

C:\Users\Meraman>where java
C:\Program Files (x86)\Java\jdk1.7.0_02\bin\java.exe
C:\Windows\System32\java.exe

C:\Users\Meraman>

转到控制面板 -> 卸载程序并删除不需要的Java版本。 - Nir Alfasi
是的,那样做可以行得通,但如果我不想卸载64位Java并仍然想使用32位Java,我该怎么做呢?谢谢。 - nullptr
当您想要编译和运行时,请在命令行中写入javacjava的完整路径(在所需版本中)-从未尝试过这样的双重配置,但我相信它应该可以工作。 - Nir Alfasi
对系统环境的更改通常需要重新启动计算机,而不仅仅是CMD。 - vzhilin
2
@mmdw 不,打开一个新的CMD窗口,更新后的环境变量就会生效! - Nir Alfasi
@alfasin 你是对的。我的错误。 - vzhilin
4个回答

10

在将其他路径(特别是 c:\windows...)添加到 PATH 环境变量之前,确保已经将 C:\Program Files (x86)\Java\jdk1.7.0_02\bin 添加到其中。

另外,在更改 PATH 后请务必重启命令行窗口。


你已经将jdk的bin目录添加到了PATH的最开始,并重新启动了一个新的命令行窗口,使用开始菜单-运行-cmd.exe吗?javac -version显示什么? - JB Nizet
我已经删除了JAVA_HOME变量,并从路径变量中删除了32位和64位的路径,然后重新启动了CMD,但仍然可以通过CMD执行java -version命令,并显示64位。我怀疑Java可能会为路径设置注册表设置,但我不知道如何更新 :( - nullptr
编辑您的问题并添加以下信息:echo %PATH% 的输出,javac -version 的输出,java -version 的输出。 - JB Nizet
看一下你的输出 echo %PATH%。里面没有 JDK 的路径。任何地方都没有。 - JB Nizet
+1,非常感谢,它起作用了。我怀疑C:\ Windows \ System32中的java.exe在做某些事情。 :) - nullptr
显示剩余4条评论

3

我遇到了同样的问题!

请检查 C:\Windows\System32 ...

你会发现由 Oracle America, Inc. 数字签名的 java.exe、javaw.exe 和 javaws.exe。

由于 PATH 在开头包括了 C:\Windows\system32,因此在你的 32 位 java.exe 之前,windows 会找到这个 java.exe。

来自德国汉堡的 Timm。


你能给我的问题点个赞吗?我已经给你的回答点了赞。谢谢。 - nullptr

0

请在以下路径中删除相同的文件(java.exe,javaw.exe和javaws.exe):

 C:\ProgramData\Oracle\Java\javapath

0

在我们的系统中,我们已经安装了最新的Java 8 x86和x64版本。曾经遇到过上述问题,PATH引用了C:\Program Files (x86)\Common Files\Oracle\Java\javapath

将上面的路径更改为C:\Program Files (x86)\Java\jre1.8.0_xxx\bin即可解决该问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接