在Windows中切换不同的JDK版本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows中切换不同的JDK版本相关的知识,希望对你有一定的参考价值。
我正在开展几个项目,其中一些正在使用不同的JDK。在JDK版本之间切换并不舒服。所以我想知道是否有任何简单的方法来改变它?
我找到了2种方法,它们应该可以解决这个问题,但它不起作用。
第一个解决方案是创建这样的bat文件:
@echo off
echo Setting JAVA_HOME
set JAVA_HOME=C:Program FilesJavajdk1.7.0_72
echo setting PATH
set PATH=C:Program FilesJavajdk1.7.0_72in;%PATH%
echo Display java version
java -version
pause
在运行这个蝙蝠之后,我看到了正确的Java版本。但当我关闭这个CMD并打开一个新的并输入“java -version”时,它说我仍然有1.8.0_25。所以它不起作用。
我找到的第二个解决方案是来自this 网站的应用程序。它也不起作用。与第一种解决方案相同的效果。
有任何想法吗?因为通过以下方式更改JAVA_HOME和PATH:Win + Pause - >高级系统设置 - >环境变量 - >并编辑这些变量,这是很可怕的方式......
set
命令仅适用于当前终端。要永久设置系统或用户环境变量,可以使用setx
。
setx JAVA_HOME "C:Program FilesJavajdk1.7.0_72" /m
/m
选项用于设置变量系统范围(而不仅仅是当前用户)。必须以管理员身份运行终端才能使用此选项。
该变量将在所有新的终端窗口中可用,但不是当前的。如果要在同一窗口中显示路径,则需要同时使用set
和setx
。
如果你曾经把PATH
放在那里,而不是完整的JDK路径,你可以避免操纵%JAVA_HOME%
变量。如果你更改JAVA_HOME
,PATH
也会更新。
还有一些环境变量编辑器可以替代繁琐的Windows环境变量设置。请参阅超级用户的“Is there a convenient way to edit PATH in Windows 7?”。
如果您的路径少于1024个字符,则可以执行(以管理员身份运行)此脚本:
@echo off
set "JAVA5_FOLDER=C:Javajdk1.5.0_22"
set "JAVA6_FOLDER=C:Javajdk1.6.0_45"
set "JAVA7_FOLDER=C:Javajdk1.7.0_80"
set "JAVA8_FOLDER=C:Javajdk1.8.0_121"
set "JAVA9_FOLDER=C:Javajdk-10.0.1"
set "CLEAR_FOLDER=C:xxxxxx"
(echo "%PATH%" & echo.) | findstr /O . | more +1 | (set /P RESULT= & call exit /B %%RESULT%%)
set /A STRLENGTH=%ERRORLEVEL%
echo path length = %STRLENGTH%
if %STRLENGTH% GTR 1024 goto byebye
echo Old Path: %PATH%
echo ===================
echo Choose new Java Version:
echo [5] JDK5
echo [6] JDK6
echo [7] JDK7
echo [8] JDK8
echo [9] JDK10
echo [x] Exit
:choice
SET /P C=[5,6,7,8,9,x]?
for %%? in (5) do if /I "%C%"=="%%?" goto JDK_L5
for %%? in (6) do if /I "%C%"=="%%?" goto JDK_L6
for %%? in (7) do if /I "%C%"=="%%?" goto JDK_L7
for %%? in (8) do if /I "%C%"=="%%?" goto JDK_L8
for %%? in (9) do if /I "%C%"=="%%?" goto JDK_L9
for %%? in (x) do if /I "%C%"=="%%?" goto byebye
goto choice
@echo on
:JDK_L5
set "NEW_PATH=%JAVA5_FOLDER%"
goto setPath
:JDK_L6
@echo off
set "NEW_PATH=%JAVA6_FOLDER%"
goto setPath
:JDK_L7
@echo off
set "NEW_PATH=%JAVA7_FOLDER%"
goto setPath
:JDK_L8
@echo off
set "NEW_PATH=%JAVA8_FOLDER%"
goto setPath
:JDK_L9
@echo off
set NEW_PATH = %JAVA9_FOLDER%
:setPath
Call Set "PATH=%%PATH:%JAVA5_FOLDER%=%CLEAR_FOLDER%%%"
Call Set "PATH=%%PATH:%JAVA6_FOLDER%=%CLEAR_FOLDER%%%"
Call Set "PATH=%%PATH:%JAVA7_FOLDER%=%CLEAR_FOLDER%%%"
Call Set "PATH=%%PATH:%JAVA8_FOLDER%=%CLEAR_FOLDER%%%"
Call Set "PATH=%%PATH:%JAVA9_FOLDER%=%CLEAR_FOLDER%%%"
rem echo Interim Path: %PATH%
Call Set "PATH=%%PATH:%CLEAR_FOLDER%=%NEW_PATH%%%"
setx PATH "%PATH%" /M
call set "JAVA_HOME=%NEW_PATH%"
setx JAVA_HOME %JAVA_HOME%
echo New Path: %PATH%
:byebye
echo
java -version
pause
如果超过1024,尝试删除一些不必要的路径,或者可以使用https://superuser.com/questions/387619/overcoming-the-1024-character-limit-with-setx的一些输入修改此脚本
- 打开
Environment Variables
编辑器(文件浏览器>右键单击此PC>属性>高级系统设置>环境变量...) - 在系统变量列表中找到
Path
变量>按编辑>将%JAVA_HOME%bin;
放在第一个位置。这是必需的,因为Java安装程序将C:Program Files (x86)Common FilesOracleJavajavapath
添加到引用最新安装的Java版本的PATH
中。 - 现在,您可以使用
setx
命令在Java版本之间切换(应该在管理权限下运行):setx /m JAVA_HOME "c:Program FilesJavajdk-10.0.1
(注意:在行的末尾没有双引号,不应该或者你将在你的c:Program FilesJavajdk-10.0.1"
变量中获得JAVA_HOME
并且它会破坏你的PATH
变量)
系统变量(和管理权限)的解决方案更加健壮,因为它在生成的PATH
变量的开头放置了所需的Java路径。
以上是关于在Windows中切换不同的JDK版本的主要内容,如果未能解决你的问题,请参考以下文章