【问题标题】:UseSplitVerifier Java 7 to Java 9UseSplitVerifier Java 7 到 Java 9
【发布时间】: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


【解决方案1】:

您的失败日志开始调查的可能原因是标志,

-XX:-UseSplitVerifier

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

理想情况下,您应该在迁移时去掉这个标志,因为在将类编译或执行到 Java SE(Java9) 版本 53 时不需要它。


编辑:在通过 junit 执行测试时,在 2.20.1 版本的 Surefire 中报告了内存泄漏。您可能仍想继续使用 2.19.1,它仍然可以与 Java9 模块一起正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2018-12-24
    相关资源
    最近更新 更多