标签:Java11 jaxb JDK11 升级 XX JDK8 支持 版本 org
1、引言
最新版本Java15都出来了,很多小伙伴还在使用Java8,当然JDK15不是长期支持版本,最新的长期支持版本是Java11,而下一个长期支持版本要等到2021年9月发布的Java17。最近把内部几个系统从Java8升级到了Java11,升级过程还是比较简单的。
Java11的新特性如下,最兴奋的功能是ZGC,相关资料请其他文档
注:以下教程基于Maven配置
2、准备工作
下载openjdk,这里推荐使用华为镜像:https://mirrors.huaweicloud.com/java/jdk/11.0.2+9/
然后导入到Idea中:
打开Project Structure,以此点击SDKs--> 加号 --> Add JDK 选择目录添加,当然也可以选第一个Download JDK直接添加,不过笔者网络不好没下下来。
3、编译器支持
Maven支持Java11的的最低版本是3.5.4(该版本以后可以不用升级)
编译插件支持,设置完成后刷新Idea,会自动将当前项目设置成JDK11
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin>
4、依赖升级
(1)额外依赖的的jar包
Java11中将一些包从标准JDK中移除,不引用可能会导致项目报错,
@Resource 注解支持:
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.1</version> </dependency>
jaxb支持:
JDK9以后的版本,模块化的概念去除了JAXB(默认没有加载),需做接入声明
<!-- jdk11 jaxb模块引用 start --> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.2</version> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> <!-- jdk11 jaxb模块引用 end -->
(2)项目中可能用到的jar包
Lombok:
首先把现在项目中所有的lombok依赖排除掉,通过Idea Maven Helper插件搜索:
然后引入lombok最新版本:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.14</version> <scope>provided</scope> </dependency>
Jacoco支持:
升级到最新版本,最低要求0.8.0
如果是用mavan plugin方式引入,修改pom.xml文件:
<plugin> <dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.6</version> </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版本号
如果还不行,则打开Project Structure配置project和module的版本号,module的版本号理论上配置了maven compiler插件,会自动刷新
6、结语
至此,JDK8升级JDK11就完成了,你还遇到过什么问题,欢迎留言讨论
Enjoy~
标签:Java11,jaxb,JDK11,升级,XX,JDK8,支持,版本,org 来源: https://blog.51cto.com/u_14637492/2893353
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。