Windows上的JAVA_HOME似乎没有任何效果
我的系统上有三个不同的JDK,因此我可以在项目之间进行适当的切换。在我的IDE中导入适当的JDK没有问题,但是命令行没有问题。请参阅,尽管我的用户和系统都指向Windows上的JAVA_HOME似乎没有任何效果,java,windows,powershell,cmd,java-home,Java,Windows,Powershell,Cmd,Java Home,我的系统上有三个不同的JDK,因此我可以在项目之间进行适当的切换。在我的IDE中导入适当的JDK没有问题,但是命令行没有问题。请参阅,尽管我的用户和系统都指向jre1.8.0_261,但是JAVA_HOME: java--version似乎仍然认为我的默认版本是Amazon的Corretto JDK,我只需要一个特定的项目: C:\Users\jasonfil>java --version openjdk 11.0.8 2020-07-14 LTS OpenJDK Runtime Env
jre1.8.0_261
,但是JAVA_HOME
:
java--version
似乎仍然认为我的默认版本是Amazon的Corretto JDK,我只需要一个特定的项目:
C:\Users\jasonfil>java --version
openjdk 11.0.8 2020-07-14 LTS
OpenJDK Runtime Environment Corretto-11.0.8.10.1 (build 11.0.8+10-LTS)
Powershell也是如此。作为管理员,我还尝试了cmd
和Powershell。同样的问题
奇怪的是,当我从cmd
查询环境变量时,我得到了预期的JDK:
C:\Users\jasonfil>echo %JAVA_HOME%
C:\Program Files (x86)\Java\jre1.8.0_261
在Powershell上,echo
只输出字符串%JAVA\u HOME
,字面意思是:
PS C:\Users\jasonfil> echo %JAVA_HOME%
%JAVA_HOME%
我的目标是能够在Java版本之间随意切换,就像基于UNIX的系统中的
更新替代方案
机制一样。有什么想法吗?cmd和Powershell都将引用Path变量,以检查请求的可执行文件是否在路径中。JAVA_HOME变量将仅由IDE或JAVA应用程序使用。因此,要在路径中包含所需的JDK,请将JDK path to path环境变量附加到用户变量(如果您希望此设置只影响当前登录的用户,即您的登录名)或系统变量
添加这些设置后,请确保重新打开cmd或Powershell控制台,使设置生效。cmd和Powershell都将引用Path变量,以检查请求的可执行文件是否在路径中。JAVA_HOME变量将仅由IDE或JAVA应用程序使用。因此,要在路径中包含所需的JDK,请将JDK path to path环境变量附加到用户变量(如果您希望此设置只影响当前登录的用户,即您的登录名)或系统变量
添加这些设置后,请确保重新打开cmd或Powershell控制台,以使设置生效。您获得的所有输出都与预期一致
JAVA_HOME
与JAVA版本无关。它只是一个变量,通常大多数基于Java的软件(例如Web和App服务器、IDE等)都使用它来查找JDK安装。因此,您应该将其设置为JDK的基本文件夹,例如C:\Program Files\Java\jdk1.8.0\u 261
java-version
查找JDK安装的bin
文件夹中的java.exe
,例如C:\Program Files\java\jdk1.8.0\u 261\bin
。因此,C:\Program Files\Java\jdk1.8.0\u 261\bin
应该是PATH
变量中的值之一。如果您已经如上所述设置了JAVA\u HOME
,那么设置JAVA.exe
的路径会变得更容易,因为您可以在path
变量中设置%JAVA\u HOME%\bin
而不是C:\Program Files\JAVA\jdk1.8.0\u 261\bin
echo%JAVA\u HOME%
将返回在JAVA\u HOME
变量中设置的值。类似地,如果使用echo%PATH%
,您将获得PATH
变量中设置的值注意:您没有获得从Java-11开始的JRE。您获得的所有输出都是预期的
JAVA_HOME
与JAVA版本无关。它只是一个变量,通常大多数基于Java的软件(例如Web和App服务器、IDE等)都使用它来查找JDK安装。因此,您应该将其设置为JDK的基本文件夹,例如C:\Program Files\Java\jdk1.8.0\u 261
java-version
查找JDK安装的bin
文件夹中的java.exe
,例如C:\Program Files\java\jdk1.8.0\u 261\bin
。因此,C:\Program Files\Java\jdk1.8.0\u 261\bin
应该是PATH
变量中的值之一。如果您已经如上所述设置了JAVA\u HOME
,那么设置JAVA.exe
的路径会变得更容易,因为您可以在path
变量中设置%JAVA\u HOME%\bin
而不是C:\Program Files\JAVA\jdk1.8.0\u 261\bin
echo%JAVA\u HOME%
将返回在JAVA\u HOME
变量中设置的值。类似地,如果使用echo%PATH%
,您将获得PATH
变量中设置的值注意:没有为您提供以Java-11开头的JRE。Java不使用
Java\u HOME
环境变量。有些工具会这样做,特别是在安装工具的过程中,但这是不同的
Java甚至不需要位于路径
,但如果是这样的话,肯定会更方便
这个问题表明在C:\ProgramFiles(x86)\Java\jre1.8.0\u 261
上安装了一个Java
它还显示了某个地方有一个OpenJDK 11.0.8,但没有显示在哪里,因此对于这个答案,我们将假设它已安装/解压缩到C:\foo\OpenJDK-11.0.8
java
可执行文件位于bin
文件夹中,因此要显示PATH
和java\u HOME
不重要,请运行完全限定的java
命令。在我的机器上,我得到以下输出(实际路径不同,版本也不同,但不管怎样):
C:\>“C:\ProgramFiles(x86)\Java\jre1.8.0\u 261\bin\Java”-版本
java版本“1.8.0_181”
Java(TM)SE运行时环境(build 1.8.0_181-b13)
Java HotSpot(TM)64位服务器虚拟机(构建25.181-b13,混合模式)
C:\>C:\foo\openjdk-11.0.8\bin\java-version
openjdk版本“11.0.2”2019-01-15
OpenJDK运行时环境18.9(构建11.0.2+9)
OpenJDK 64位服务器VM 18.9(构建11.0.2+9,混合模式)