当前位置: 首页 > 面试题库 >

Maven surefire无法找到ForkedBooter类

胥智
2023-03-14
问题内容

最近进入一个新项目,我正在尝试编译我们的源代码。昨天一切正常,但是今天又是另一个故事了。

每次我在mvn clean install模块上运行时,一旦通过测试,就会崩溃为错误:

[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ recorder ---
[INFO] Surefire report directory: /lhome/code/recorder/target/surefire-reports
[INFO] Using configured provider org.apache.maven.surefire.junitcore.JUnitCoreProvider
[INFO] parallel='none', perCoreThreadCount=true, threadCount=0, useUnlimitedThreads=false, threadCountSuites=0,     threadCountClasses=0, threadCountMethods=0, parallelOptimized=true

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Error: Could not find or load main class org.apache.maven.surefire.booter.ForkedBooter

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

后来:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project recorder: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

我正在使用OpenJDK 1.8.0_181,Maven
3.5.4 在Debian
9
(Stretch)64位​​上运行,并在我的中配置了公司代理。~/.m2/settings.xml

如果我没记错的话,最新的Surefire版本是2.22.1,这很奇怪。我试图指定插件版本,但是它没有更新,否则在任何POM(父,祖父母或祖父母)中都没有插件版本规范。

我设法迫使Maven将Surefire版本更改为最新版本,但现在情况更糟了:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[...]

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project recorder:     There are test failures.
[ERROR]
[ERROR] Please refer to /lhome/code/recorder/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd /lhome/code/recorder/ && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java     '-javaagent:/lhome1/johndoe/.m2/repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runt    ime.jar=destfile=/lhome/code/recorder/target/jacoco.exec,append=true,includes=esa/*,excludes=**/api/**/*.class' -jar     /lhome/code/recorder/target/surefire/surefirebooter7426165516226884923.jar /lhome/code/recorder/target/surefire     2018-10-26T16-16-12_829-jvmRun1 surefire1721866559613511529tmp surefire_023400764142672144tmp
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye.     VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd /lhome/code/recorder/ && /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java     '-javaagent:/lhome1/johndoe/.m2/repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runt    ime.jar=destfile=/lhome/code/recorder/target/jacoco.exec,append=true,includes=esa/*,excludes=**/api/**/*.class' -jar     /lhome/code/recorder/target/surefire/surefirebooter7426165516226884923.jar /lhome/code/recorder/target/surefire     2018-10-26T16-16-12_829-jvmRun1 surefire1721866559613511529tmp surefire_023400764142672144tmp
[ERROR] Error occurred in starting fork, check output in log
[ERROR] Process Exit Code: 1
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:669)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:282)
[ERROR]     at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1183)
[ERROR]     at     org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1011)
[ERROR]     at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:857)
[ERROR]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
[ERROR]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
[ERROR]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
[ERROR]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
[ERROR]     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
[ERROR]     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
[ERROR]     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
[ERROR]     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
[ERROR]     at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
[ERROR]     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

问题答案:

要修复此问题(在2018年),请将您的openjdk更新到最新版本,至少为8u191-b12。
如果此问题在2020年再次出现,则很有可能已更改了openjdk的默认行为,然后您将需要更新maven surefire插件。

这是您刚刚升级到 的openjdk-8软件包中的 一个 现已修复的
错误 (行为无需明显偏离上游;丢失了上游补丁以恢复为禁用安全检查)。但这也是
surefire插件SUREFIRE-1588中的
一个 错误 ,据说已在 surefire
3.0.0-M1中修复:显然,它在将来Java只允许相对路径名的位置使用绝对路径(并且Debian激活了未来的行为)。

软件包版本8u181-b13-2指出:

  • 应用8u191-b12安全更新中的补丁。

注意191-b12!=
181-b13。191-b12安全补丁是几天前发布的,显然维护人员希望将它们快速提供给您。完全更新到191-b12可能需要额外的测试(嗯,显然应该进行此上传)。

有几种解决方法:

  1. 您可以从snapshots.do安装 先前的软件包 。降级后,您可以使用来禁止损坏的版本(如果您使用的是aptitude而不是aptsudo aptitude forbid-version openjdk-8-jre-headless。对于常规的“ apt”,我没有看到类似的禁止机制,因此您可能需要使用apt pinning来防止重新安装此升级(或者您只是继续降级,希望很快能解决)。
  2. 根据错误跟踪,-Djdk.net.URLClassPath.disableClassPathURLCheck=true使用任何常用方法(例如JAVA_FLAGS)设置属性也将有所帮助。但是我自己还没有验证。显然,您甚至可以 添加变通方法以~/.m2/settings.xml轻松地为所有Maven构建启用它。

如您所见, 错误跟踪有效 ,问题已缩小,并且有固定的软件包可用,并且新版本的surefire插件即将推出!



 类似资料:
  • 最近来到一个新的项目,我正在尝试编译我们的源代码。昨天一切都很顺利,但今天却是另外一回事了。 每次在模块上运行时,一旦到达测试,它就会崩溃,出现错误: 以及稍后的: 我使用OpenJDK 1.8.0_181、Maven 3.5.4运行在Debian ;9(Stretty)64位上,在我的公司代理(我在中配置)的基础上工作。 奇怪的是,如果我没记错的话,最新的Surefire版本是2.22.1。我试

  • 问题内容: 我试图从命令promopt运行一个示例Java应用程序,但出现以下错误: 我用来尝试运行此应用的命令是: 所有相关文件都位于当前工作目录中(.java,.class和.jar文件) 我用来构建.class文件的命令如下(有2个.java文件): 再次从同一工作目录运行-的内容(或多或少): 我试图以C#开发人员的身份学习Java,所以我在编程概念方面拥有深厚的背景,整个Java工具链目

  • 我正在尝试使用ISOWeek,但在任何地方都找不到它。我尝试了几种不同的使用方法: 我已经尝试添加每一个系统。我可以找到运行时引用,但它总是给出这些错误: 错误CS0234:命名空间“系统”中不存在类型或命名空间名称“ISOWeek”。全球化“(是否缺少程序集引用?) 错误CS0103:名称“ISOWeek”在当前上下文中不存在 错误CS0246:找不到类型或命名空间名称'ISOYork'(您是否

  • 问题内容: Selenium无法通过ID和定位iframe Name。 这是用于Shopify上的自动结帐测试。具体问题在付款字段内。我找到的ID和名称iframe,即。 Code trials: The error is: 问题答案: 我相信可以为此使用XPath。您将需要使用XPath查找IFrame IWebElement,然后将IWebElement传递到SwitchTo()。Frame(

  • 问题内容: 我正在用Java构建一个项目。 我有这个错误: 我已经安装了JDK和文件夹:在我的系统中,但是文件不存在。 问题答案: 是的,您已经下载并安装了Java Runtime Environment(JRE)而不是Java Development Kit(JDK)。后者具有tools.jar,java.exe,javac.exe等。

  • 过了很长时间,我正在安装一台新机器。 我使用家庭酿造安装了java: 在我的。我添加的zshrc文件: 运行'java-version'会得到以下输出: openjdk 版本 “18.0.1.1” 2022-04-22 OpenJDK 运行时环境 自制 (生成 18.0.1.1 0) OpenJDK 64 位服务器虚拟机 自制 (构建 18.0.1.1 0, 混合模式, 共享) 当我尝试运行net