一、背景
在验证xxl-job hessian反序列化漏洞的过程中,由于java版本过高导致诸多不便,所以试图在mac上安装多个java环境并能在适当的时候进行切换。
在macOS系统中,JDK通常安装在/Library/Java/JavaVirtualMachines/目录下。目前我的系统上有如下的jdk
二、下载安装
但是甲骨文官网实在太卡。从华为的仓库下载:https://repo.huaweicloud.com/java/jdk/
我这里下载的是这个版本:https://repo.huaweicloud.com/java/jdk/8u202-b08/
8u202是JDK 8的最后一个免费版本,之后从8u211开始收费。
发生报错:
F1:失败
![]()
打开终端,输入: sudo spctl --master-disable 然后输入锁屏密码。 然后在【系统偏好设置】-【安全性与隐私】-【通用】-【允许从以下位置下载的应用】中选择「任何来源」,然后再安装。
但是并没有解决问题。
F2:失败
【系统偏好设置】-【安全性与隐私】
![]()
F3:更换成jdk8-u181
https://repo.huaweicloud.com/java/jdk/8u181-b13/jdk-8u181-macosx-x64.dmg
安装成功。
三、配置环境变量
Mac下通过bash_profile文件来对环境信息进行配置。
执行以下命令打开配置文件:vim ~/.bash_profile
,新增下面的内容。
# Java config
export JAVA_8_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home"
export JAVA_11_HOME="/Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home"
export JAVA_16_HOME="/Library/Java/JavaVirtualMachines/jdk-16.0.2.jdk/Contents/Home"
# config alias
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
alias jdk11="export JAVA_HOME=$JAVA_11_HOME"
alias jdk16="export JAVA_HOME=$JAVA_16_HOME"
# config default jdk
export JAVA_HOME=$JAVA_8_HOME
修改保存上述配置,对bash_profile进行编译生效:
source ~/.bash_profile
可以进行版本切换了:
(base) /Library/Java/JavaVirtualMachines java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
(base) /Library/Java/JavaVirtualMachines jdk11
(base) /Library/Java/JavaVirtualMachines java -version
java version "11.0.12" 2021-07-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.12+8-LTS-237)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.12+8-LTS-237, mixed mode)
(base) /Library/Java/JavaVirtualMachines jdk16
(base) /Library/Java/JavaVirtualMachines java -version
java version "16.0.2" 2021-07-20
Java(TM) SE Runtime Environment (build 16.0.2+7-67)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
四、IDEA中配置JDK
在应用中配置JRE路径即可。