JDK多版本管理
安装JDK
sudo tar -zxvf TencentKona-17.0.6.b1-jdk_linux-aarch64.tar.gz -C /Library/Java/JavaVirtualMachines/kona-jdk-17/
sudo tar -zxvf TencentKona-11.0.14.b1-jdk_linux-aarch64.tar.gz -C /Library/Java/JavaVirtualMachines/kona-jdk-11/
sudo tar -zxvf TencentKona8.0.9.b1_jdk_linux-aarch64_8u322.tar.gz -C /Library/Java/JavaVirtualMachines/kona-jdk-8/
设置环境变量
- 设置不同版本的JAVA_HOME
# java
export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home
export JAVA_11_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
export JAVA_17_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:${JAVA_HOME}/lib
# 设置默认版本
export JAVA_HOME=$JAVA_17_HOME
# alias命令动态切换JDK版本
alias jdk8="export JAVA_HOME=${JAVA_8_HOME}"
alias jdk11="export JAVA_HOME=${JAVA_11_HOME}"
alias jdk17="export JAVA_HOME=${JAVA_17_HOME}"
export PATH
export CLASSPATH
- 生效配置
使用本地的shell配置,这里使用的是zsh
source .zshrc
切换版本
❯ java -version ~
java version "17.0.13" 2024-10-15 LTS
Java(TM) SE Runtime Environment (build 17.0.13+10-LTS-268)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.13+10-LTS-268, mixed mode, sharing)
[15:32:12] [cost 0.338s] java -version
❯ jdk11 ~
[15:32:17] [cost 0.033s] jdk11
❯ java -version ~
java version "11.0.25" 2024-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.25+9-LTS-256)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.25+9-LTS-256, mixed mode)
[15:32:19] [cost 0.693s] java -version
❯ jdk8 ~
[15:32:32] [cost 0.048s] jdk8
❯ java -version ~
java version "1.8.0_431"
Java(TM) SE Runtime Environment (build 1.8.0_431-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.431-b10, mixed mode)
[15:32:35] [cost 0.138s] java -version
IDE支持多版本编译
IDEA配置环境变量
pom文件示例
- JDK8
<properties>
<jdk.home>${env.JAVA_8_HOME}</jdk.home>
<jdk.version>1.8</jdk.version>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${plugin.compiler.version}</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<fork>true</fork>
<debug>true</debug>
<optimize>true</optimize>
<encoding>${encoding}</encoding>
<showDeprecation>true</showDeprecation>
<compilerVersion>${jdk.version}</compilerVersion>
<executable>${jdk.home}/bin/javac</executable>
</configuration>
</plugin>
</plugins>
</build>
- JDK17
SpringBoot3要求JDK17,就涉及到此场景
<properties>
<spring.cloud.version>2022.0.5</spring.cloud.version>
<slf4j.vesion>1.7.30</slf4j.vesion>
<jdk.home>${env.JAVA_17_HOME}</jdk.home>
<spring.boot.version>3.1.7</spring.boot.version>
<jdk.version>17</jdk.version>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestEntries>
<Plugin-Id>${project.artifactId}</Plugin-Id>
<Plugin-Compiler-Version>${jdk.version}</Plugin-Compiler-Version>
<Plugin-Open-Modules>java.lang,java.lang.reflect</Plugin-Open-Modules>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
卸载
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-17.jdk
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?