在 cmd 中临时更改 JAVA_HOME 不会在 Windows 中临时更改 PATH

the*_*rer 3 windows java path jdk command-line

JAVA_HOME在用户的环境变量中定义了 jdk11 并PATH包含%JAVA_HOME%/bin在其中。

现在我想cmd通过更改JAVA_HOME为 jdk8在命令提示符 ( ) 中临时切换到 jdk8,但它不会更改当前 cmd 实例中的值pathjava -version不会更改。

PS- 我已经删除了 c:\Program Data\Oracle\java.. 文件以避免任何混淆

Dav*_*ill 9

它不会更改路径中的值或 java -version 在当前实例中不会更改 cmd

您必须重新启动cmd以使更改生效,因为cmdshell 从父进程继承了它的环境。


那么从命令行在 Java 版本之间切换的正确方法是什么?

使用一组批处理文件,如下:

作为一名 Java 开发人员,我总是在不同的 Java 版本上编译和测试我的代码。但是在它们之间切换是一个大问题。所以最后我找到了一个简单的方法来做到这一点。您必须创建以下批处理文件并将它们放在您在系统路径中或在系统路径中打开命令行的目录中。您可以使用您喜欢的文本编辑器来创建这些文件。

jdk14.bat

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\j2sdk1.4.2_12
echo setting PATH
set PATH=C:\j2sdk1.4.2_12\bin;%PATH%
echo Display java version
java -version
Run Code Online (Sandbox Code Playgroud)

jdk15.bat

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.5.0_12\bin;%PATH%
echo Display java version
java -version
Run Code Online (Sandbox Code Playgroud)

jdk16.bat

@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11
echo setting PATH
set PATH=C:\Program Files\Java\jdk1.6.0_11\bin;%PATH%
echo Display java version
java -version
Run Code Online (Sandbox Code Playgroud)

确保JAVA_HOME根据您的 Java 安装在批处理文件中分配适当的值。每当您想在 Java 版本之间切换时,只需运行相应的批处理文件即可。

注意: JAVA_HOME和 java 的路径必须始终引用完全相同的JDK. 如果你把它们混在一起,就会发生不可预测的事情!

Windows 中不同JDK 版本之间的Source切换| Oracle Pranav 的博客