我在环境中安装了多个版本的Java(我知道它很糟糕)。我已经将JAVA_HOME设置为jdk 1_4
目录。这不是安装的,而是从zip中提取并放置在某个地方。我们在系统中也安装了java 1.8 JRE
。我从来没有设置这个安装目录的路径。现在我正在尝试运行一些依赖于jdk 1_4的ant脚本。我得到一些例外,说它无法在java1.8...
中找到tools.jar。
我的问题是,当路径和java_home设置为jdk 14时,为什么蚂蚁寻找1.8版本的java?我困惑。
Update:我已经查找了重复的问题。
Additional details:
Java -version打印1.8,jdk 14在路径和java_home。我卸载了1.8。重新打开CMD尝试Java -version,现在它错误地说它无法找到java1.8,而不是试图在路径或java_home中找到下一个可用的Java。
错误显示:
C:Usersusrpao>java
Error: could not open `C:Program FilesJavajre8libamd64jvm.cfg'
我在环境中安装了多个版本的Java(我知道它很糟糕)。我已经将JAVA_HOME设置为jdk 1_4目录。
完全没有错。我有一个类似的设置,因为我必须在Java版本之间切换。
- 首先,在驱动器的根目录下安装Java jdk。目录名中没有空格。例如:
C:JavaJava-1.6-21
、C:JavaJava-1.7-5
。 - 在系统控制面板的环境变量部分(在高级下),创建一个环境变量来指向这些Java主目录中的每个。例如:
JAVA_HOME_17 = C:JavaJava-1.7.5
、JAVA_HOME_16 = C:JavaJava-1.6-21
。这应该是一个系统环境变量 - 创建一个JAVA_HOME环境变量,指向您想要的Java版本:
JAVA_HOME = %JAVA_HOME_17%
。 - 现在在System PATH中,在PATH(第一个条目)前面加上
%JAVA_HOME%bin
。
当你打开一个控制台窗口时,你默认的java
和javac
命令将是正确的Java版本。
如果您需要更改一个版本,请更改JAVA_HOME
环境变量以指向正确的环境变量并打开一个新的控制台窗口。现在,新的Java将在您的路径中。
注意: %JAVA_HOME%bin
在C:WindowsSystem32
之前出现在PATH
的第一部分是非常重要的。您不希望该目录中存在的java.exe
是您的默认java.
您没有指定操作系统,所以:
- 在windows上,java在C:Windowssystem32中安装java.exe,它可能在java_home之前的路径上,因此被拾取
- 在Linux上,支持多个安装的java版本的各种发行版也会在路径的前面有一些符号链接。运行'which java'来确定符号链接在哪里
系统存在多个java版本的问题,我先卸载了所有的java版本。重启了我的机器。Path和java home指向jdk 1.4。java -version
现在指向path
中指定的版本。谢谢所有。