【问题标题】:java.exe always point to the path of JRE but not JDKjava.exe 总是指向 JRE 的路径而不是 JDK
【发布时间】:2011-07-12 04:05:18
【问题描述】:

我的 Windows 7 上同时安装了 jdk 和 jre。

我已将 JAVA_HOME 设置为

C:\Program Files\Java\jdk1.6.0_23

我已经添加了

C:\Program Files\Java\jdk1.6.0_23\bin

到路径。

但 java.exe 仍然指向我的 jre 目录,即

C:\Program Files\Java\jre6\bin

从我跑步开始

java.exe -server

它抱怨

Error: no `server' JVM at `C:\Program Files\Java\jre6\bin\server\jvm.dll'.

谁能告诉我还需要设置什么?

【问题讨论】:

  • 只是想确认一下,更改环境变量后是否重启了shell?

标签: environment-variables java


【解决方案1】:

因为你在 Windows 上,java 不能那样工作。 在某些 windows 目录中有一个 java.exe (%windir% system32 给你)

这个 java.exe 实际上在注册表中查找 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

PATH 帮不了你!由于我比较懒惰,所以我删除了 JRE,而是为 JDK 创建了一个 junction

【讨论】:

  • java.exe 在注册表中查找?是呀当然?我的意思是,java.exe 不应该这样做......
  • @panny,我不确定我是否理解 - 不是由谁提出的。任何 Windows 进程都可以查找注册表。注册表的某些键(甚至是配置单元)可能仅限于某些进程/用户,但这已经超出了重点。
  • @bestsss 我只想知道 junction 到底是怎么一回事?
  • @anasanjaria,这是一个模仿 *nix 符号链接的 Windows 实用程序:technet.microsoft.com/en-us/sysinternals/bb896768.aspx
【解决方案2】:

只需从 %windir%\system32 中删除 java.exe

【讨论】:

    【解决方案3】:

    如果您有 64 位操作系统,它将尝试使用预装在 windows 7 上的 64 位 jre。您可以尝试使用添加/删除程序来删除 64 位 jre。我已经多次遇到这个问题,我总是通过删除 64 位 jre 来解决它。

    【讨论】:

    • 在 64 位操作系统上,只有 64 位服务器 JVM
    【解决方案4】:

    右击我的电脑>属性>高级系统设置>环境变量>

    搜索路径..

    删除现有路径,然后添加你的..

    注意分号

    【讨论】:

    • 您好,“照顾好分号”是什么意思?
    【解决方案5】:

    确保您的 JRE/bin 目录不包含在您的路径中。搜索路径时找到的第一个 java.exe 实例将被执行。如果您已将 JDK 添加到 JRE 之后的路径中,则将始终选择 JRE。

    您还可以在调用 java 时显式指定 java.exe 的完整路径。这将确保您始终知道您正在调用什么 java jre/jdk。

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 2019-04-19
      • 1970-01-01
      • 2019-02-27
      • 2018-09-16
      • 2018-11-10
      • 2020-04-30
      • 2013-07-10
      相关资源
      最近更新 更多