Mac下兼容多JDK 支持灵活切换
MAC下,常规配置JDK的流程大致如下:
- 下载安装包,或使用brew install
- 以上步骤完成后,就需要在~/.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$
Featured Tags
工具类
XML
JAVA
Java
Mybatis
反射
代理模式
日志
工厂方法模式
装饰器模式
结果集映射
Web
RESTful
WebAPI规范
SQL
Redis
Jira
SynapseRT
有限状态机 State Machine
statemachine
SpringBoot
IDEA
Tomcat
Vue
Docker
Springboot
Apache Ignite
项目发布与调试
白帽子讲web安全
黑名单
通用化
企业中台实践
MacOS
docker
minio
springboot
分布式存储
Postgres
数据备份
数据恢复
K8S
抖音小程序
开发实践
SpringCloud
Skywalking
Nacos
Kubernetes
Secret
ConfigMap
Git
GitOps
云原生
RocketMQ
ActiveMQ-Artemis
ClickHouse
Kamailio
sipp
Homer
heplify
heplify-server
HEP