我们正在将现有的应用程序从Java 7转换为Java 9,为了满足最低要求,我在这里尝试遵循这个页面:https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw
当我尝试在我们的一些组件上运行mvn干净安装时,我一直得到:
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
当我尝试谷歌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
参数被传递,所以我不确定什么是使用该命令,除了尽力而为的插件。
发布于 2017-11-03 04:08:08
您的失败日志开始调查的可能原因是,
-XX:-UseSplitVerifier
它似乎是不赞成使用Java8本身,在Java9 [来源- JVM选项的完整列表 ]中不再支持。
理想情况下,您应该在迁移时去掉这个标记,因为您在编译或执行类到Java9(Java9)的53版本时不需要这个标记。
编辑:在通过junit执行测试时,在2.20.1版本的surefire中报告了一个内存泄漏。您可能仍然希望使用2.19.1,它仍然可以很好地处理Java9模块。
https://stackoverflow.com/questions/47084821
复制相似问题