转载

使用 Java 9 运行 Spring Boot

如果你希望使用 Java 9 运行 Spring Boot 应用程序,这篇文章将会对你有所帮助。

注意:问题跟踪器包含了所有未解决的关于 Java 9 的已知问题,所以在报告新问题前,请查看该列表。

要求

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 也能正常运行。

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

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

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

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

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

Testing

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

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-surefire-plugin</artifactId>
	<configuration>
		<argLine>--add-modules java.base</argLine>
	</configuration>
</plugin>

已知的限制

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

  • Apache Cassandra,详情请查看 #10453

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

原文  https://www.oschina.net/translate/spring-boot-with-java9
正文到此结束
Loading...