java.exe总是指向JRE的路径而不是JDK的路径

9

我在我的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'.

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


1
您好,我想确认一下,在更改环境变量后,您是否重新启动了 shell? - Sanjay T. Sharma
5个回答

14

由于您使用的是Windows系统,Java的工作方式与Linux不同。

在某些Windows目录中(对于您来说是%windir% system32),有一个java.exe可执行文件。

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

PATH环境变量是无法帮助您的!因此,为了方便我经常删除JRE并创建一个指向JDK的junction(链接)


1
Java.exe 在注册表中查找?你确定吗?我的意思是,Java.exe 不应该这样做... - panny
@panny,我不确定我理解了这个问题 - 不是由谁规定的。任何Windows进程都可以查找注册表。注册表的某些键(甚至是蜂房)可能会对某些进程/用户进行限制,但这已经超出了讨论范围。 - bestsss
@bestsss,我想了解一下junction是什么意思? - anasanjaria
@anasanjaria,这是一个Windows实用程序,模仿*nix符号链接:http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx - bestsss

3

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


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

在64位操作系统上,只有64位-server JVM。 - bestsss

0

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

搜索路径..

删除现有路径,然后添加您自己的路径..

注意分号


嗨,你说的“处理分号”是什么意思? - Sandun

0

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

您还可以在调用Java时明确指定java.exe的完整路径。这将确保您始终知道正在调用哪个Java JRE / JDK。


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