JAVA_HOME 和 java -version
Posted
技术标签:
【中文标题】JAVA_HOME 和 java -version【英文标题】:JAVA_HOME and java -version 【发布时间】:2012-05-28 01:29:42 【问题描述】:我正在使用 Windows .bat 脚本,并将 JAVA_HOME
设置为 C:/Program Files/Java/jdk1.6.0_32
当我执行java -version
时,它仍然显示 1.3
我该如何解决这个问题?我做错了什么?
【问题讨论】:
它没有给出任何错误顺便说一句 显示echo %PATH%
的输出。
这还不够。将 JAVA_HOME\bin
添加到 PATH
。
【参考方案1】:
对我来说,问题出在我的 PATH 变量中,C:\ProgramData\Oracle\Java\javapath;
是由 java windows install 在我的%JAVA_HOME%\bin;
之前添加的。
所以我会 echo %JAVA_HOME%
指向 JDK7 和 java -version
显示 jdk8。
我想把%JAVA_HOME%\bin;
放在C:\ProgramData\Oracle\Java\javapath;
之前,这样java -version
就会显示jdk7。
【讨论】:
【参考方案2】:试试%JAVA_HOME%\bin\java -version
如果您修改JAVA_HOME
,通常最好使用绝对路径调用java
(使用JAVA_HOME
),因为新的二进制文件可能不在路径中(然后Windows 将加载错误的二进制文件)。
【讨论】:
【参考方案3】:确保PATH
环境变量指向%JAVA_HOME%\bin
。
【讨论】:
【参考方案4】:一定不要混用系统变量路径和用户变量系统路径。我觉得在没有绝对路径的情况下调用java
感觉很好(当我知道JAVA_HOME
和PATH
的配置方式时)。
【讨论】:
【参考方案5】:从命令行调用 java -version
会导致 cmd.exe 对“已知”目录进行查找。 “已知”表示 PATH 环境变量。您的 PATH 似乎包含一个 java 1.3 bin
文件夹,而不是 1.6。
JAVA_HOME 是另一个变量,它被(例如,但不仅是)java 包装器使用,或者被执行一些 java 东西的脚本使用。
尝试这样做:
SET JAVA_HOME=C:/Program Files/Java/jdk1.6.0_32
%JAVA_HOME%/bin/java -version
在需要的地方添加引号。
【讨论】:
【参考方案6】:我有类似的问题,就我而言,我安装了两个版本的 java。它可以通过从系统中完全卸载一个版本的 java 来修复。
【讨论】:
【参考方案7】:今天有一个类似的情况 - 两台 Windows 10 设备 - 都有 JRE 1.6 和 1.7。
打字时
Java -version
一台设备显示 1.6,另一台显示 1.7。
这阻止了我运行第三方 JAR 来在显示 1.6 的设备上安装一些软件(在运行 java -version 时在显示 1.7 的设备上运行良好),使用:
java -jar ThirdParty.jar
因为 JAR 需要由 1.7 运行。
原因是在 PATH 环境变量中 - 一台设备在 PATH 列表中的第一个位置是 1.6,将 1.7 位置移动到 1.6 位置上方导致使用 Java 版本的一致性,并允许我安装软件。
【讨论】:
以上是关于JAVA_HOME 和 java -version的主要内容,如果未能解决你的问题,请参考以下文章
Flutter / Dart 找不到 java 和 $JAVA_HOME
什么是 JAVA_HOME? JVM如何找到存储在JAVA_HOME中的javac路径?