[Java]Java 9運行Spring Boot項目報錯的解決辦法


簡介

為了學習和盡快掌握 Java 9 的模塊化(Module System)新特性,最近安裝了 JDK 9,新建了一個 Spring Boot 進行嘗試,
過程中遇到了一下報錯問題,寫下此文謹作為個人筆記,同時也供遇到相同問題的同學參考。

1. Gradle "Could not determine java version from '9.0.1'." 問題

之前本地安裝的是 Gradle 4.1 版本,在創建基於Gradle的Spring Boot項目時,在Gradle執行Build:sync的時候出現了

Could not determine java version from '9.0.1'.

的問題,查找原因是我的Gradle版本過低不支持 Java 9,解決方案:
Gradle官網按照說明下載安裝了最新的Gradle(當前是Gradle 4.4.1)。在IDE中配置使用本地指定位置的Gradle,重新創建項目就沒有報錯了。

2. Spring Boot Java 9 問題

開始使用了 Spring Boot 1.5.x,運行時又報錯了,查了一下這里的說明,原來必須要 Spring Boot 2.x 才支持 Java 9,這個重新創建一個 Spring Boot 2.x 項目就可以解決。

3. "java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException" 問題

繼續嘗試運行,發現報了如下的錯誤:

java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

查找資料有兩個解決辦法,先說簡單的,即在build.gradle添加下面這個依賴:

runtime group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'

如果你用的是Maven的話,添加這個:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

當你看到這篇博客的時候版本可能已經更新了,只要去mvnrepository.com去看最新的就行了。
第二個解決辦法是在Stack Overflow上看到的,最高票答案說在運行時把下面這個參數加到命令行選項中:

--add-modules java.xml.bind

顯然,這是一個比較麻煩的方法,還是推薦第一個方法“一勞永逸”吧。

小結

以上就是我目前在嘗試 Java 9 之初遇到的幾個小問題以及對應的解決辦法,如不正確請指出。下一步希望進一步深入了解和掌握 Java 9 的模塊化特性。


免責聲明!

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



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