UseSplitVerifier Java 7到Java 9

问题描述 投票:4回答:1

我们正在将现有的应用程序从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插件之外还有什么使用该命令。

java maven java-9 maven-surefire-plugin
1个回答
1
投票

你的失败日志开始调查的可能原因是国旗,

-XX:-UseSplitVerifier

这似乎是deprecated with Java8本身,在Java9中不再受支持[来源 - Complete list of JVM options

理想情况下,在迁移时应该删除此标志,因为在编译或执行Java SE版本53(Java9)时,您不需要这样做。


编辑:在通过junit执行测试时,2.20.1版本的surefire中报告了内存泄漏。您可能希望仍然使用2.19.1,它仍然适用于Java9模块。

© www.soinside.com 2019 - 2024. All rights reserved.