本文首發:http://blog.didispace.com/Spring-Boot-2.0%E4%B8%8EJava-9/
Java 9發佈至今已經有半年之久,Spring Boot對其的支持進度也快接近完成,本文就來整理一下在Java 9上運行Spring Boot的一些要點。
必須使用Spring Boot2.0
在Spring Boot的版本計劃中明確說明了2.0版本開始纔對Java 9進行支持,而1.x版本暫時沒有對Java 9的支持計劃,所以如果我們要使用Java 9,就必須將Spring Boot版本升級至2.0。
細節注意點
AspectJ
在Java9中要使用JDK的編譯織入切面時,我們需要引入AspectJ 1.9,但是這個版本還處於RC狀態,並不是正式版本,所以當Spring Boot 2會在Aspect 1.9 GA的時候更新這個版本依賴。
JAXB
如果使用Hibernate的情況下,由於依賴JAXB,這個時候可能會碰到這個錯誤:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
,面對這個問題,只需要引入如下依賴就可以解決:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
測試插件
最新的maven-surefire-plugin
插件(2.20.1版本)需要手工指定一個模塊以防止包含java.se.ee
:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>--add-modules java.base</argLine>
</configuration>
</plugin>
或者也可以指定降級到2.20.0版本
一些暫不支持的類庫