升级maven编译插件_JDK8升级JDK11过程记录

1、引言

最新版本Java15都出来了,很多小伙伴还在使用Java8,当然JDK15不是长期支持版本,最新的长期支持版本是Java11,而下一个长期支持版本要等到2021年9月发布的Java17。最近把内部几个系统从Java8升级到了Java11,升级过程还是比较简单的。

a0cbedd15ec1885a91eec7a678a87182.png

Java11的新特性如下,最兴奋的功能是ZGC,相关资料请其他文档

970470bedc2994486057d78665eaf4f1.png

注:以下教程基于Maven配置

2、准备工作

下载openjdk,这里推荐使用华为镜像:https://mirrors.huaweicloud.com/java/jdk/11.0.2+9/

然后导入到Idea中:

打开Project Structure,以此点击SDKs--> 加号 --> Add JDK 选择目录添加,当然也可以选第一个Download JDK直接添加,不过笔者网络不好没下下来。

9a9cba432ab27cb0661806391aa3dba2.png

3、编译器支持

Maven支持Java11的的最低版本是3.5.4(该版本以后可以不用升级)

编译插件支持,设置完成后刷新Idea,会自动将当前项目设置成JDK11

 <plugin>    <groupId>org.apache.maven.pluginsgroupId>    <artifactId>maven-compiler-pluginartifactId>    <version>3.8.1version>     <configuration>         <source>11source>         <target>11target>     configuration> plugin>

4、依赖升级

(1)额外依赖的的jar包

Java11中将一些包从标准JDK中移除,不引用可能会导致项目报错,

@Resource 注解支持:
<dependency>   <groupId>javax.annotationgroupId>   <artifactId>javax.annotation-apiartifactId>   <version>1.3.1version>dependency>
jaxb支持:

JDK9以后的版本,模块化的概念去除了JAXB(默认没有加载),需做接入声明    

        <dependency>            <groupId>org.glassfish.jaxbgroupId>            <artifactId>jaxb-runtimeartifactId>            <version>2.3.2version>        dependency>        <dependency>            <groupId>javax.xml.bindgroupId>            <artifactId>jaxb-apiartifactId>        dependency>        <dependency>            <groupId>com.sun.xml.bindgroupId>            <artifactId>jaxb-implartifactId>            <version>2.3.0version>        dependency>        <dependency>            <groupId>org.glassfish.jaxbgroupId>            <artifactId>jaxb-runtimeartifactId>            <version>2.3.0version>        dependency>        <dependency>            <groupId>javax.activationgroupId>            <artifactId>activationartifactId>            <version>1.1.1version>        dependency>        

(2)项目中可能用到的jar包

Lombok:

首先把现在项目中所有的lombok依赖排除掉,通过Idea Maven Helper插件搜索:

e0617d21e404c23f8a5a36788f5203e8.png

然后引入lombok最新版本:

<dependency>    <groupId>org.projectlombokgroupId>    <artifactId>lombokartifactId>    <version>1.18.14version>    <scope>providedscope>dependency>
Jacoco支持:

升级到最新版本,最低要求0.8.0

如果是用mavan plugin方式引入,修改pom.xml文件:

<plugin>    <dependency>        <groupId>org.jacocogroupId>        <artifactId>jacoco-maven-pluginartifactId>        <version>0.8.6version>    dependency>plugin>

如果是javaagent方式引入,从官网下载最新的包:https://www.eclemma.org/jacoco/

这里下载的是0.8.6.zip,解压开使用里面的/lib/jacocoagent.jar文件即可,JVM参数:

-javaagent:${WORK_PATH}/jacocoagent.jar=output=tcpserver,port=6300,address=*"

5、JVM日志参数

java11中将很多日志参数去掉了,比如以下日志参数失效:

GC_LOG="-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintAdaptiveSizePolicy \            -XX:+PrintGCApplicationStoppedTime -XX:+PrintHeapAtGC -XX:+PrintStringTableStatistics -XX:+PrintTenuringDistribution -Xloggc:$LOG_PATH/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=30 -XX:GCLogFileSize=50M"

新的jvm参数:

GC_LOG="-Xlog:gc:$LOG_PATH/gc.log"

6、IDEA可能会遇到的问题排查

常见的问题是引入了JDK11,但是编译器不支持Java11新语法,解决方案如下:

打开Preferences,配置Java Compiler中的Java版本号

60e22ec136780f1df164757ac1fbd0f0.png

如果还不行,则打开Project Structure配置project和module的版本号,module的版本号理论上配置了maven compiler插件,会自动刷新

ec290282c2d0dea3770374e12f7175c4.png

88717a5acb6c6accafc2a0bc68ef3e7b.png

6、结语

至此,JDK8升级JDK11就完成了,你还遇到过什么问题,欢迎留言讨论

Enjoy~

ekuspace.com/archives/jdk8-sheng-ji-jdk11-guo-cheng-quan-ji-lu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值