切换Java 32位和Java 64位

4

我刚刚发现如果我使用64位JDK,Apache Tomcat无法作为Windows服务运行。因此,我在Windows上另外安装了32位Java。

问题是当我使用java -version检查Java版本时,它仍然显示64位正在运行。如何从64位切换到32位?最好还能够随时切换回64位。

3个回答

7
当您使用java -version检查Java版本时,显示的仍然是64位正在运行,这个说法不完全正确。并没有复制Java仍在/已经运行。(或者如果有,当您运行java -version时,没有和它交互) 实际上显示的是,当您输入命令名java时,您的命令shell运行了一个64位Java。原因是shell的%PATH%变量告诉shell查找包含64位版本而非32位版本的目录。您需要做的是更改shell的%PATH%和%JAVA_HOME%环境变量以指向正确的位置。%JAVA_HOME%应该指向安装目录,%PATH%变量应包括%JAVA_HOME%\bin。

1
%PATH%变量应该包括%JAVA_HOME%\bin。虽然在Linux上是正确的,但这对Windows没有帮助。在Windows上,Java是从%WINDIR%启动的,因此更改PATH将不会产生任何影响。相反,应该指示tomcat脚本从指定位置启动Java。 - bestsss

1

我发现在Windows 7上,我必须在多个地方的注册表项中编辑JAVA_HOME路径,以便完全切换到另一个Java安装路径。在环境变量中更改JAVA_HOME是不够的。您可以自己进行快速测试:

  1. 重命名您的Java Home目录。
  2. 更新您的%JAVA_HOME%环境变量值以反映您的JAVA_HOME的新名称。
  3. 在新的命令窗口中运行java -version

您将收到一个错误消息。

Error: could not open `C:\your_java_home_path\jre7\lib\amd64\jvm.cfg'

因此,在Linux上,仅更改$JAVA_HOME就足以将指针更改为Java的新安装目录,这与Windows的行为不同。
看起来Windows在其注册表中多个位置硬编码了Java主目录路径。
Start --> Run --> regedit

HKEY_LOCAL_MACHINE / SOFTWARE / JavaSoft / ... 下,展开每个目录并编辑您找到的每个硬编码的 java home 路径,以匹配您的新 JAVA_HOME 路径,并在每个出现的注册表中进行修改。

这种行为是因为您的路径包含对旧Java安装的另一个引用。如果您修复了路径,这将不会成为问题。 - iheanyi

1

您需要将JAVA_HOME环境变量设置为您想要使用的JDK版本的路径。

对于2000/XP,请参见:http://confluence.atlassian.com/display/DOC/Setting+the+JAVA_HOME+Variable+in+Windows

对于Windows 7,请参见:http://www.itechtalk.com/thread3595.html(这不是设置JAVA_HOME变量的教程,而是通用环境变量,请根据您的需求进行调整。)

如果你想更改在命令行上运行java -version时看到的Java版本,则必须更改PATH环境变量,以便它包含您想要使用的JDK的bin目录的路径。请参见:http://www.java.com/en/download/help/path.xml
记得在更改PATH变量后关闭命令行窗口并重新打开它。

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