使用 Java 9 运行 Spring Boot

要求

Spring Boot 2.0 是首个支持 Java 9 的版本(同时支持 Java 8)。如果你正在你使用 1.5.0 并希望使用 Java 9,你应该升级到 2.0 版本,官方表示目前没有计划在 Spring Boot 1.5.x 系列上支持 Java 9。

AspectJ

使用 Java 9,如果你需要编译 JDK 中的类,则需要使用 AspectJ 1.9(目前处于 RC 阶段)。这是一个临时的解决方案,因为 Aspect 1.9 GA 即将推出,而且 Spring Boot 也将升级到该版本。在大多数情况下,使用 AspectJ 1.8(Spring Boot snapshot 中的默认版本),Spring AOP 也能正常运行。

JAXB

升级时可能会遇到以下情况:

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

Hibernate 通常需要的 JAXB 不再默认提供。你需要为你的项目添加以下依赖:


    javax.xml.bind
    jaxb-api
    2.3.0

或者你可以添加 java.xml.bind 模块以使用 Java 9 恢复该功能。

Testing

使用 Java 9 进行测试时,最新的 maven-surefire-plugin 版本(2.20.1)引入了回归错误,你可以降级到 2.20.0,或显式添加一个模块以防止引入 java.se.ee:


	org.apache.maven.plugins
	maven-surefire-plugin
	
		--add-modules java.base
	

已知的限制

下面这些库尚未完全支持 Java 9:

  • Apache Cassandra,详情请查看 #10453

  • 除非以打包的 war 形式运行,否则 JSP TLD 会附带有嵌入式的 Tomcat,详情请查看 #10456




你可能感兴趣的:(jdk9,springboot,AspectJ,插件,模块集成)