1 前言
JDK8虽然非常好,但是JDK版本已经发布到JDK20了,且JDK8后的版本升级了很多新的特性,如模块化、ZGC以及虚拟线程、结构性并发等,也是非常有吸引力的,所以决定将基于JDK8的项目升级到最近的LTS版本JDK17。
2 升级过程记录
2.1 安装JDK17
下载JDK17的最新版本jdk-17_linux-x64_bin.tar.gz
,解压缩后移动到/usr/lib/jvm/
目录下
$ sudo su -
# tar -xzf jdk-17_linux-x64_bin.tar.gz
# mv jdk-17.0.2 /usr/lib/jvm/java-17
复制代码
然后修改~/.bashrc
,设置java相关环境变量为JDK17
# vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-17
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
复制代码
环境变量生效后,检查当前的jdk版本为JDK17
# source ~/.bashrc
# java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
复制代码
2.2 升级spring版本并编译
修改项目的pom.xml
文件,将spring boot和spring cloud版本由
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
复制代码
修改为最新正式发布版本:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<spring-cloud.version>2022.0.2</spring-cloud.version>
</properties>
复制代码
编译项目,报以下错误:
程序包javax.servlet.http不存在
程序包javax.validation不存在
复制代码
原因是原先javax
包的名字改为jakarta
了,将项目中所有依赖javax
包的地方替换为jakarta
继续编译,报以下错误: