2011-11-26 167 views
4

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

问题是,当我使用java -version检查java版本时,它仍然显示64位仍在运行。你如何从64位切换到32位?如果能够在以后切换回64位,那也不错。

回答

7

问题是当我使用java -version检查java版本时,它仍然显示64位仍在运行。

这不完全正确。没有Java的副本仍在运行。 (或者,如果有,你不是说要当您运行java -version

这是什么实际上所示的是命令shell运行64位Java时,你给它的命令名称java 。原因是shell的%PATH%变量告诉shell查看包含64位版本的目录,而不是32位版本;即你没有改变它!

您需要做的是将shell的%PATH%和%JAVA_HOME%环境变量更改为指向正确的位置。 %JAVA_HOME%应该指向安装目录,并且%PATH%变量应该包含%JAVA_HOME%\ bin。

+1

*%PATH%变量应该包含%JAVA_HOME%\ bin。*这不会帮助Windows,但它对于Linux来说是正确的。在Windows上,java从%WINDIR%开始,所以修改PATH将没有任何效果。应该指示tomcat脚本从指定位置启动java。 – bestsss

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
请记住关闭命令shell并在更改PATH变量后重新打开它。

1

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

  1. 重命名您的Java主目录。
  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在其注册表中的多个位置硬编码Java主路径。

Start --> Run --> regedit 

HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/... 展开每个目录并编辑,你觉得硬编码到新JAVA_HOME路径在每次出现注册表每一个Java主路径。

+0

-1。这是因为您的路径包含对旧Java安装的另一个引用。如果你修好了路线,这不会是一个问题。 – iheanyi