「是時候升級java11了」 jdk8升級至dk11踩坑記

專欄目錄

  1. 是時候升級java11了-01-jdk11優點和jdk選擇
  2. 是時候升級java11了-02-升級jdk11踩坑記
  3. 是時候升級java11了-03虛擬機Jvm參數設置
  4. 是時候升級java11了-04微服務內http2通訊之http2 Clear Text(h2c)
  5. 是時候升級java11了-05微服務內h2c通訊的阻礙和問題解決

前言

緊接上文,下面筆者來列舉咱們在升級到 Java11 遇到的坑(若是你也遇到其它的問題,歡迎你們留言交流)。java

1、字體問題

在 Linux 環境 Java11 在驗證碼和 Excel 部分功能會使用到字體,這就觸發 Java11 的字體問題。git

解決方案:

  1. 建立fontconfig.properties文件 在 $JAVA_HOME/lib 目錄下建立 fontconfig.properties 文件。

內容以下:github

version=1
sequence.allfonts=default
複製代碼
  1. 安裝字體
sudo yum install fontconfig
sudo yum install urw-fonts 
sudo fc-cache -f
複製代碼

詳情能夠查看 open jdk github issuesgithub.com/AdoptOpenJD…api

2、javax.xml.bind 不存在

Java11 刪除了 Java EE modules,其中就包括 java.xml.bind (JAXB)。bash

啓動時提示微服務

WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10.jar) to field java.util.TreeMap.comparator
複製代碼

解決方案就是你能夠手動添加相關依賴。post

<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-core</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.0</version>
</dependency>
複製代碼

詳細狀況能夠查看:stackoverflow.com/questions/5…字體

3、編譯報錯

因爲刪除部分API,如下類找不到ui

sun.misc.BASE64Encoder、sun.misc.BASE64Decoder 
複製代碼

解決步驟: 使用java.util.Base64.Encoderjava.util.Base64.Decoder替換spa

4、內置容器沒法啓動

當咱們使用 Eureka 做爲註冊中心時,因爲移除依賴的JAXB模塊。

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.
複製代碼

須要手動引入:

<dependency>
	<groupId>org.glassfish.jaxb</groupId>
	<artifactId>jaxb-runtime</artifactId>
</dependency>
複製代碼

聲明

本系列文章由微服務核心組件mica做者如夢技術共同整理撰寫, 若有參考或者轉載,請保留原做者和註明出處。

image
相關文章
相關標籤/搜索