Mac配置多JDK,灵活切换

去xml、注解化

Posted by Claire on February 9, 2022

Mac下兼容多JDK 支持灵活切换

MAC下,常规配置JDK的流程大致如下:

  1. 下载安装包,或使用brew install
  2. 以上步骤完成后,就需要在~/.bash_prfile中配置JAVA_HOME,PATH,CLASSPATH等参数
#~/.bash_profile文件
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH:.
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.

一、为什么要配置JAVA_HOME,PATH,CLASSPATH

在学习JAVA的时候,就是跟着老师和百度,把JAVA环境搭起来了,也没有考虑为什么要这么做,不配置就运行不了了吗?我们先了解一下这些配置的作用是什么?

可以通过JAVA程序编译过程简单了解编译Java程序、执行Java程序的环节

步骤1:javac将.java文件编译为.class文件

步骤2:找到java基础类库

步骤3:把.class文件读入到虚拟机的内存当中,然后转换成机器语言并解释执行

  • PATH中,主要为了指明java javac的地址,避免安装路径不同,无法寻找到指令地址
  • JAVA_HOME,主要为了全局化配置JAVA的地址,便于切换版本,便于其他组件引用
  • CLASSPATH,主要为了指定java基础类库地址,从JDK1.5开始,Java运行时环境(JRE)有了自动搜索当前文件夹下.class文件,并自动加载dt.jar和tools.jar类库文件的功能,所以从JDK1.5开始,可以不用配置CLASSPATH环境变量
  • 以上一系列操作主要是为了在命令行环境下,能够不指定地址前缀的情况下使用相关命令,比如:java,javac,npm,mvn…,但在目前IDE开发工具成熟的情况下,例如IDEA可以全局化配置jdk版本和JDK home目录,并为不同项目配置JDK版本,对于前面一堆操作都不用了

二、Mac下搭建多JDK环境

在~/.bash_profile文件中增加如下内容,配置保存后source ~/.bash_profile使其生效

export JAVA_11_HOME="/Library/Java/JavaVirtualMachines/jdk1.11.0_11.jdk/Contents/Home"
export JAVA_8_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home"

export JAVA_HOME=$JAVA_8_HOME

alias jdk11="export JAVA_HOME=$JAVA_11_HOME"
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
  • 默认JAVA8的版本,可以通过jdk11和jdk8的命令灵活切换
  • 对比单个JDK的配置,此处去除了PATH(不可添加,如果未删除切换会不生效,我踩的坑主要在这里),CLASSPATH(jdk5以后不需要添加)

测试结果如下:

chen@004:/usr/bin$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
chen@004:/usr/bin$ jdk11
chen@004:/usr/bin$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
chen@004:/usr/bin$ jdk8
chen@004:/usr/bin$ 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)
chen@P004:/usr/bin$