“system32\java.exe”和“Program Files\Java\jdk1.6.0_33\bin\java.exe”有什么区别?

2022-09-01 09:51:52

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

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

当我检查我的PC时,我发现有2个java.exe:
1.2
C:\Program Files\Java\jdk1.6.0_33\bin\java.exeC:\WINDOWS\system32\java.exe

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

我是否仍需要添加到 PATH 环境变量?C:\Program Files\Java\jdk1.6.0_33\bin\


答案 1

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

提供 in 是为了不是每个人都需要设置 PATH 变量来运行 java 程序(从命令行),如果安装了多个(公开)安装的 java 虚拟机 (JVM),则选择已安装的 java 虚拟机 (JVM) 的版本(看起来是最后安装的版本)。java.exe\windows\system32\

有关详细信息,请参阅此链接:

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

报价:

更复杂的是,system32中的java.exe只是一个假人。它在注册表中查找,然后决定使用哪个真正的java.exe。最后安装的 JVM 将是使用的 JVM,即使它是较旧的。要切换 JVM,通常必须重新安装所需的 JVM。


答案 2

(不是答案,而是对马蒂亚斯答案的评论)不确定这个“虚拟”业务。system32 中的 java.exe是一个普通文件,甚至不是符号或硬链接。马蒂亚斯可能指的是这里解释的问题: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。安装程序无法在 SysWoW64 中放置 java.exe 的副本,因此尝试启动 Java 的 32 位应用将无法执行此操作。如果用户使用资源管理器在system32目录中查找,这将使用户感到困惑,因为资源管理器是一个64位应用程序,因此将看到“真实”的system32目录。


推荐