0x00背景
最近接手了一个新项目, 新项目需要使用的JDK版本为JDK 11, 由于现有的主营项目需要使用的JDK版本为JDK 17, 所以电脑的JDK默认版本一直为JDK 17, 因此在终端编译新项目时,需要动态切换JDK版本为11.
0x01 操作
环境: MacOS + zsh
执行如下命令, 确认电脑已经安装的JDK版本有哪些
/usr/libexec/java_home -V
输出如下
Matching Java Virtual Machines (2):
17.0.9 (arm64) "Azul Systems, Inc." - "Zulu 17.46.19" /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
11.0.15 (arm64) "Azul Systems, Inc." - "Zulu 11.56.19" /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
可见已经安装的JDK版本有17和11.
当编译新项目时, 在终端上执行如下两个命令(直接复制,丢到终端上回车运行即可)
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
export PATH=$JAVA_HOME/bin:$PATH
接着再执行如下命令查看是否已经切换成功
java -version
输出如下则说明已经切换成功
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment Zulu11.56+19-CA (build 11.0.15+10-LTS)
OpenJDK 64-Bit Server VM Zulu11.56+19-CA (build 11.0.15+10-LTS, mixed mode)
0x02 总结
本文介绍了一种动态临时切换JDK版本的方法(仅当前shell标签页生效, 其他标签页不受影响), 既能避免频繁修改系统的环境变量配置, 又能动态临时切换JDK版本, 满足不同项目需要不同JDK版本的要求.