JDK8升級至JDK11步驟及要點


 

項目環境描述:

名稱 升級前版本 升級后版本
JDK JDK 8 JDK 11
Spring Boot 2.1.0 2.1.0
Spring Cloud Greenwich Greenwich
Eclipse Mars.2 Release (4.5.2) 2019-09 R (4.13.0)

 

 

 

 

 

 

 

 

一、了解JDK11

1、版本說明

美國當地時間2018年9月25日,Oracle 官方宣布 Java 11 (18.9 LTS) 正式發布,可在生產環境中使用!這是自 Java 8 后的首個長期支持版本。按照 Oracle 公布的支持路線圖,Java 11 將會獲得 Oracle 提供的長期支持服務,直至2026年9月。

 

2、許可證

3、新特性

 

二、開發環境配置

1、JDK11下載與安裝

(1)官方下載路徑

https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

 

(2)官方安裝指南

JDK11沒有JRE安裝,安裝與配置相較以前更精簡)

https://docs.oracle.com/en/java/javase/11/install/overview-jdk-installation.html

 

2、環境變量配置

替換Path中JDK8的Path目錄,改為:C:\Program Files\Java\jdk-11.0.5\bin;

 

三、JAVA IDE適配版本

1、Eclipse

(1)Eclipse 4.9版本開始支持JDK11版本

(2)官方下載路徑:https://download.eclipse.org/eclipse/downloads/

(3)我下載的是Eclipse 2019-09 R (4.13.0) 版本

 

2、IntelliJ IDEA

(1)2018年9月份以前的版本,可能會存在一些問題,盡量下載2019.2版本。

(2)官方下載路徑:https://www.jetbrains.com/idea/download/

 

四、修改開發配置

1、maven版本升級

(1)3.5.4版本(該版本以后可以不用升級)

 

(2)刪除JAVA_HOME和CLASSPATH配置,mvn –v查看版本是否正確

 

(3)maven下載地址

(我下載的3.6.2版本,此版本側重於性能改進、更好的內存占用和更少的 CPU 使用率)

https://maven.apache.org/download.cgi

 

(4)修改環境變量

MAVEN_HOME修改為:E:\Program Files\apache-maven-3.6.2

 

2、修改eclipse配置

(1)修改maven路徑

(2)修改JDK路徑

(3)修改Compiler為Java11

 

五、代碼修改

1、編譯報錯

1、sun.misc.BASE64Encoder、sun.misc.BASE64Decoder找不到類

(1)原因:JDK11中刪除了sum.misc包

(2)解決方式:使用java.util.Base64.Encoder、java.util.Base64.Decoder替換

 

2、服務啟動報錯

(1)WARNING: Unable to start embedded Tomcat(啟動eureka服務時)

原因:JDK11下使用最新的Greenwich版本的eureka默認情況下必定無法啟動,日志提示內嵌的Tomcat沒法啟動。官方原文:

The JAXB modules which the Eureka server depends upon were removed in JDK 11. If you intend to use JDK 11 when running a Eureka server you must include these dependencies in your POM or Gradle file.

解決辦法:加入JAXB依賴

<dependency>

         <groupId>org.glassfish.jaxb</groupId>

         <artifactId>jaxb-runtime</artifactId>

         <version>2.3.2</version>

</dependency>

 

(2)WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/E:/WorkSpace/IDEs/MAVEN/RepositoryMicro/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10.jar) to field java.util.TreeMap.comparator(啟動客戶端服務時)

原因:JDK9以后的版本,模塊化的概念去除了JAXB(默認沒有加載),需做接入聲明。

解決辦法:加入JAXB依賴

<!--  jdk11 jaxb模塊引用 start  -->

<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  -->

 

筆者在JDK8的環境下,換到JDK11測試其兼容性,以上是過程記錄。不同的環境升級到JDK 11,可能遇到的問題會有些許差異,但大致情況應該差不多。如有疑問,歡迎下方評論。

 

撰寫不易,轉載請注明出處,謝謝!

地址:https://www.cnblogs.com/80dream/p/11799115.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM