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_HOMEPATH 的配置方式时)。

【讨论】:

【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章

Mac下设置JAVA_HOME和MAVEN_HOME

java.home 和 JAVA_HOME 的区别

Flutter / Dart 找不到 java 和 $JAVA_HOME

什么是 JAVA_HOME? JVM如何找到存储在JAVA_HOME中的javac路径?

在 CentOS 6 中设置 JAVA_HOME 和 CLASSPATH

Java 学习第四篇--Java环境JAVA_HOME 和 classpath的理解