15

运行单元测试时发生以下异常:

org.apache.maven.lifecycle.LifecycleExecutionException: ExecutionException; nested exception is java.util.concurrent.ExecutionException: java.lang.RuntimeException: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

有什么建议么?

4

5 回答 5

7

有什么建议么?

异常的错误消息可能解释了发生了什么。您的一个单元测试有

  • 称为System.exit(), 或
  • 破坏了单元测试工具,或
  • 做了一些导致运行它的 JVM 崩溃的事情。

我们不能告诉你是哪一个。

(我想这个问题被报告了,因为 maven JVM 期望子 JVM 将单元测试结果写入其标准输出。它从孩子那里得到的结果是缺少表明单元测试的消息(或其他)已经完成。可能根本原因可能与建议的替代方案不同,但我对此表示怀疑,而且猜测毫无意义......)

有问题的单元测试的日志文件中可能有更多信息。检查那个/他们。

于 2012-09-25T15:15:12.477 回答
4

我在运行 Maven 目标“包”时遇到了同样的问题。当我在执行“package”之前执行目标“clean”时,问题得到了解决

于 2013-07-30T12:38:04.207 回答
3

我有同样的问题。结果我更新了我的库而没有更新我的 java 版本,而且我的 servlet.jar 有点太新了。在“forked VM bla exception”之前,我在日志中发现了以下消息:

Caused by: java.lang.UnsupportedClassVersionError: javax/servlet/ServletRequest : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.getMethod0(Class.java:2670)
at java.lang.Class.getMethod(Class.java:1603)
at org.apache.maven.surefire.util.ReflectionUtils.tryGetMethod(ReflectionUtils.java:57)
at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isSuiteOnly(JUnit3TestChecker.java:64)
at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isValidJUnit3Test(JUnit3TestChecker.java:59)
at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.accept(JUnit3TestChecker.java:54)
at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.accept(JUnit4TestChecker.java:51)
at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:97)
at org.apache.maven.surefire.junit4.JUnit4Provider.scanClassPath(JUnit4Provider.java:194)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:92)

更新 JVM 有所帮助。

于 2014-03-24T23:56:07.630 回答
2

我只在接受的答案中报告的詹金斯遇到了同样的问题,并且花了一个小时才意识到问题是詹金斯的工作名称中有一个空格,这是在做一些事情(仍然不知道是什么)由于作业名称是 jenkins 工作区中所有内容所在的文件夹,因此调用 surefire 插件会发疯。

所以,要清楚,詹金斯与这个问题无关,我只在詹金斯看到它,因为只有我在我的道路上有一个空间

我希望这对其他人有帮助。这是在万无一失的 2.14.1 和 2.16 下。

于 2014-01-29T23:12:53.413 回答
0

这可能与管理员权限有关。mvn clean install从 Cygwin运行构建时,我遇到了同样的问题。

现在每次构建时,我都以“以管理员身份运行”启动 cygwin,问题就解决了。

于 2013-01-06T19:22:30.867 回答