32

我刚刚在 Windows XP 中安装了 Java JDK 6u33。即使我没有设置 PATH 环境变量,我也可以java -version在命令提示符下运行。

当我运行这个命令for %i in (java.exe) do @echo. %~$PATH:i时,我得到这个输出: C:\WINDOWS\system32\java.exe

当我检查我的电脑时,我发现有2个java.exe:
1。2 C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
C:\WINDOWS\system32\java.exe

system32\java.exe我可以知道和有什么区别Program Files\Java\jdk1.6.0_33\bin\java.exe吗?为什么只system32\java.exe在我运行时显示for %i in (java.exe) do @echo. %~$PATH:i

我还需要添加C:\Program Files\Java\jdk1.6.0_33\bin\到我的 PATH 环境变量吗?

4

2 回答 2

29

设置PATH变量只是为了让您可以访问javacjdk bin 文件夹中的其他程序和工具。

提供了java.exein\windows\system32\以便不是每个人都需要设置 PATH 变量来运行 java 程序(从命令行)选择已安装的 java 虚拟机 (JVM) 的版本(似乎是最后安装的)(如果有)安装了多个(公开)。

有关更多信息,请参阅此链接:

http://mindprod.com/jgloss/javaexe.html#MULTIPLES

引用:

更复杂的是,system32 中的 java.exe 只是一个伪程序。它查看注册表,然后决定使用哪个真正的 java.exe。最后安装的 JVM 将成为使用的那个,即使它较旧。要切换 JVM,您通常必须重新安装您想要的。

于 2012-06-16T13:43:33.473 回答
12

(不是答案,而是对马蒂亚斯答案的评论)不确定这个“虚拟”业务。system32 中的 java.exe 是一个普通文件,甚至不是符号链接或硬链接。Mattias 可能指的是这里解释的问题:http: //msdn.microsoft.com/en-us/library/aa384187

简而言之,如果您有 64 位系统和 Java 安装,则 32 位应用程序将看不到安装在 C:\Windows\System32\ 中的 java.exe(也没有 javaw.exe、javaws.exe)因为它们将显示为 C:\Windows\SysWoW64\ 伪装成 C:\Windows\System32。安装程序无法将 java.exe 的副本放入 SysWoW64,因此尝试启动 Java 的 32 位应用程序将无法这样做。如果用户使用资源管理器查看 system32 目录,这会使用户感到困惑,因为资源管理器是一个 64 位应用程序,因此会看到“真实的”system32 目录。

于 2012-10-11T19:28:01.383 回答