【问题标题】:What is the difference between "system32\java.exe" and "Program Files\Java\jdk1.6.0_33\bin\java.exe"?“system32\java.exe”和“Program Files\Java\jdk1.6.0_33\bin\java.exe”有什么区别?
【发布时间】:2012-06-19 07:12:26
【问题描述】:

我刚刚在 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.C:\Program Files\Java\jdk1.6.0_33\bin\java.exe
2.C:\WINDOWS\system32\java.exe

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

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

【问题讨论】:

    标签: environment-variables java


    【解决方案1】:

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

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

    查看此链接了解更多信息:

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

    引用:

    为了使事情进一步复杂化,system32 中的 java.exe 只是一个假程序。 它查看注册表,然后决定使用哪个真正的 java.exe。 最后安装的 JVM 将成为使用的那个,即使它较旧。 要切换JVM,通常需要重新安装你想要的。

    【讨论】:

    • 它不是一个虚拟的“java.exe”,您不需要重新安装,您只需使用 -version 参数(如java -version:"1.6" MyClass)传递所需的版本,以强制将 1.6 JRE 安装在安装了多个版本的工作站(请参阅docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html
    • 诚然,您当然可以绕过重新安装的需要如果您将命令行参数传递给它,当然您也可以指定Java运行时的完整路径(java.exe、javaw.exe 或 javaws.exe)。不过,对于大多数用户来说,两者都不是“自动魔法”。
    【解决方案2】:

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

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

    【讨论】:

    • 在 64 位系统上,您通常应该同时安装 64 位和 32 位版本的 Java。
    • 我有这样的安装,但例如 64 位 Eclipse 运行 32 位 Java,知道为什么吗?当我运行java -version 时,它也会返回 32 位版本。是否可以修改为主要使用64位?
    • Betlista,你安装了两个JDK吗?
    • 检查任务管理器,如果它显示eclipse.exe *32,那么您有一个 32 位 Eclipse,它将使用 32 位 Java。要使用 64 位 Java,您需要 64 位 Eclipse。
    • Visual Studio 是 32 位程序,所以在 System32/下看 64 位 Java 会有问题
    猜你喜欢
    • 2016-11-05
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多