web-dev-qa-db-ja.com

SureFireプラグインの問題:-"フォークされたVMは、適切に別れを告げずに終了しました。VMクラッシュまたはSystem.exitが呼び出されましたか?"

ユニットテストの実行中に、次の例外が発生します。

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)

助言がありますか?

14
johnny-b-goode

助言がありますか?

例外のエラーメッセージは、おそらく何が起こっているのかを説明しています。ユニットテストの1つに次のいずれかがあります

  • System.exit()と呼ばれる、または
  • ユニットテストハーネスが壊れている、または
  • それが実行されていたJVMをクラッシュさせた何かをしました。

どちらだったのかわかりません。

(Maven JVMは、子JVMが単体テストの結果を標準出力に書き込むことを期待していたため、問題が報告されていると思います。子から返されたものには、単体テストを示すメッセージ(またはその他)がありませんでした。根本的な原因が提案された代替案と異なる可能性がありますが、私はそれを疑っています、そしてそれは無意味な推測です...)

問題のある単体テストのログファイルには、おそらくより多くの情報があります。それを確認してください/それら。

6
Stephen C

Mavenゴール「パッケージ」を実行しているときに同じ問題に直面していました。 「パッケージ」を実行する前に「クリーン」という目標を実行すると、問題は解決しました。

4

私は同じ問題を抱えています。 Javaバージョンを更新せずにライブラリを更新したところ、少し新しいservlet.jarがありました。'forkedVM bla例外 ':

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の更新が役立ちました。

3
Leon

受け入れられた回答で報告されているように、私はジェンキンスでのみこれと同じ問題を抱えていましたが、ジェンキンスのジョブ名にスペースが含まれていることが問題であることに気付くのに1時間かかりました、これは何かを作っています(まだ何がわかりません)ジョブ名はすべてが存在するjenkinsワークスペース内のフォルダーであるため、surefireプラグインの呼び出しはおかしくなります。

したがって、明確にするために、ジェンキンスは問題とは何の関係もありません。パスにスペースがあったので、ジェンキンスでしか見ませんでした。

これが他の誰かに役立つことを願っています。これは確実な2.14.1と2.16の下にありました。

2
Hilikus

これは、管理者権限に関係している可能性があります。ビルドを実行しているときに同じ問題に直面していましたmvn clean installCygwinから。

これで、ビルドのたびに「管理者として実行」としてcygwinを起動し、問題が解決しました。

0
Vivek