【发布时间】:2017-11-02 21:18:17
【问题描述】:
我们正在将现有应用程序从 Java 7 转换为 Java 9,我正在尝试在此处关注此页面以了解最低要求:https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw
当我尝试在我们的一些组件上运行 mvn clean install 时,我不断收到:
Caused by: org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
Command was cmd.exe /X /C ""C:\Program Files\Java\jdk-9.0.1\bin\java" --add-modules java.se.ee -XX:-UseSplitVerifier -jar
当我尝试使用 Google 搜索 UseSplitVerifier 时,我不断看到有关 StackMapTable 的信息,或者 UseSplitVerifier 是否可以安全使用。但我真的不知道 UseSplitVerifier 是什么以及从 J7 -> J9 构建的正确方法是什么。
编辑
我的 pom.xml 有这个插件:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
查看https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw 链接,它说最低要求是使用 2.20.1,所以我认为可以吗?当我搜索我的项目时,我没有看到任何 UseSplitVerifier 参数被传递,所以我不确定除了 surefire 插件之外使用该命令的是什么。
【问题讨论】:
-
只是为了补充细节,您在项目中使用的 maven-surefire-plugin 版本是什么?很高兴看到编译器插件配置以及日志中的命令。另请注意,您不应再使用
-XX:-UseSplitVerifier。它自 Java 8 以来已被弃用,并且可能在 Java9 中被删除(无法识别的 VM 选项 'UseSplitVerifier')。 -
@nullpointer 我在运行 maven 或 pom.xml 时没有使用该选项。还有另一种运行方式吗?
标签: java maven java-9 maven-surefire-plugin