フォークされたVMは、適切に別れを告げることなく終了しました。VMのクラッシュまたはSystem.exitの呼び出し


189

この問題の解決を手伝ってください。ログのエラーの意味がよくわかりません。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.749s
[INFO] Finished at: Thu Apr 24 10:10:20 IST 2014
[INFO] Final Memory: 15M/37M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test (default-test) on project samples.simpleforwarding: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
[ERROR] Command wascmd.exe /X /C ""C:\Program Files\Java\jdk1.7.0_55\jre\bin\java" -Xmx1024m -XX:MaxPermSize=256m -jar E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefirebooter53410321571238933.jar E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefire86076271125218001tmp E:\OpenDayLight\controller\opendaylight\samples\simpleforwarding\target\surefire\surefire_01846991116135903536tmp"
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

7
出力が示唆するように、-eと-Xを指定してMavenを再実行し、出力内容を貼り付けてください。また、独自のコードまたは既存のライブラリを構築していますか?独自のコードを作成している場合、どこかでSystem.exit(int)を呼び出していますか?既存のライブラリを構築している場合、どこでソースを入手しましたか?
Dylon、2014

@Dylon Edwards:これは、SDN実装用の既存のソースコードであるOpenDayLightプロジェクトです。
astack 14

問題を再現する最近のシナリオは、xmlファイルからテストスイートを実行したときです。xmlファイルが存在しないクラスを定義している場合、またはクラスの古い完全修飾名を参照している場合、移動すると、JVMはクラスのロードに失敗します。これは、あなたが観察した奇妙なメッセージをもたらします。スタックトレースを詳しく調べると、このような問題を特定するのに役立ちます。この場合、-eまたは-Xスイッチを渡す必要はありません。
Ivaylo Slavov 2014

@astackこれの解決策になったのは何ですか?答えをマークするか、自分で書いてください。
ナマン

回答:


121

私は同じ問題を抱えており、追加することで解決しました:

<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>

プラグイン要素全体は次のとおりです。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <forkCount>3</forkCount>
    <reuseForks>true</reuseForks>
    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
  </configuration>
</plugin>

7
+1私はこのスニペットを逐語的に使用し、Travis-CIの問題を修正しました。開発者のワークステーションではこれを実現できませんでした。
StartupGuy 2016

7
上記は私のために問題を修正しませんでした。この問題は、依存関係(jarなど)の1つ.m2が破損している場合に「発生する可能性があります」。〜/ .m2 / repository rm -rf ~/.m2/repositoryを削除してからmvn install解決しました。
ch4nd4n

2
これをコピーして私のpomファイルに貼り付けてください。これは魅力のように機能しました。ありがとう
Flaom

6
OpenJDK 64ビットサーバーVMの警告:オプションMaxPermSize = 256mを無視します。サポートは8.0で削除されました
Julien

2
誰かがそれが実際に何をし、どのような影響を与えるかを説明できますか?
borgmater

71

私の場合、問題はIntelliJ IDEAコンソール(OS Windows 10)へのログ出力が長すぎることに関連していました。

コマンド:

mvn clean install

このコマンドで問題が解決しました:

mvn clean install > log-file.log

ログが長すぎるのも私にとって問題でした!ログファイルへのリダイレクトは役に立ちませんでした。最も一般的なロギングステートメントの一部を情報からデバッグに変更することで問題が解決しました
RvPr

7
ロギングが多すぎると、私の場合は本当の問題でした!!
Changwon Choe

1
エラーストリームも忘れないでください:mvn clean test 2> err.txt 1> out.txtまたはmvn clean test> out.txt 2>&1またはmvn clean test 2>&1 | tee out.txtリダイレクト中に、他のコンソールで+ F out.txtを減らして出力を見ることができます
radzimir

1
私にとって、windows cmdからIntellijコンソールに切り替えることで解決しました。
ブロッコリー

3
実際、ログファイルにリダイレクトすると、この問題は解決します。
horizo​​n7

40

私は非常に似た問題(Mavenビルドとmaven-failsafe-plugin-フォークされたVMがgoodbyeを適切に言わずに終了しました)があり、私のために働く3つのソリューションを見つけました:

問題の説明

Mavenプラグインmaven-surefire-pluginに問題があるのは、バージョン2.20.1および2.21.0のみです。チェックしたところ、バージョン2.20.1を使用しています。

解決策1

プラグインのバージョンを2.22.0にアップグレードします。pom.xmlに追加:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.22.0</version>
</plugin>

解決策2

プラグインのバージョンを2.20にダウングレードします。pom.xmlに追加:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.20</version>
</plugin>

解決策3

プラグイン構成testFailureIgnoreを使用します。pom.xmlに追加:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <testFailureIgnore>true</testFailureIgnore>
  </configuration>
</plugin>

私にとってこの組み合わせはうまくいきました:<plugin> <groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-surefire-plugin </ artifactId> <version> 2.22.1 </ version> <configuration> < testFailureIgnore> true </ testFailureIgnore> </ configuration> </ plugin>
Abhishek

おかげで、maven:3.6.0-jdk-10Dockerイメージを使用し3.0.0-M3maven-surefire-plugin解決済みのバージョンにアップグレードしてくれました。
danialk

17
ソリューション3に関して:テストの失敗を無視することがソリューションであると本当に言えるでしょうか。結果が意味をなさない場合、テストを行う意味は何ですか?
ウルカイ

maven-surefire-pluginを2.22.2にアップグレードしましたが、正常に動作します!
Krzysztof Walczewski

うん!surefireのv2.22.2にアップグレードすると、それも解決されました。どうも!
ミグ

32

本日(2018年10月30日)の時点で、Jenkinsでこのエラーが発生してビルドが壊れていることに気付きました。

エラーは少し誤解を招くものでありtarget/surefire-reports/ 、次のエラーメッセージを表示するためにダンプの出力を確認する必要があります。

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

そのため、OpenJDK 181のバグの可能性について言及している次のSOの投稿に行きました。MavensurefireがForkedBooterクラスを見つけられませんでした

その投稿のいずれかの修正で私の問題が解決します。具体的には、次のいずれかを使用しました。

  1. Dockerコンテナーでのビルドmaven:3.5.4-jdk-8からmaven:3.5.4-jdk-8-alpine
  2. ここで詳述されているSpring Bootのクラスローダーをオーバーライドする:https//stackoverflow.com/a/50661649/1228408

1
ありがとう。今回のケースでは、1.8.0_161-b12から11.0.1 + 13への切り替えが役立ちました。
Karussell、

1
これは私がジェンキンスで直面していた正確な問題であり、現在解決されています。ありがとう。
Vighnesh Pai 2018

OPには別のエラーメッセージがありましたThe forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
。– PetroCliff

1
@PetroCliff「私はこのエラーでJenkinsでビルドが壊れていることに気づきました」と言ったときにも私が受け取っていたエラーであることを認めました。次に、エラーは誤解を招くものであり、実際のエラーはにあると説明しましたsurefire-reports
majikman

25

Surefire FAQのこの部分は、次のことに役立ちます。

Surefireが失敗し、「フォークされたVMは適切に別れを告げずに終了しました」というメッセージ

Surefireは、テストやSystem.exit()を呼び出す参照ライブラリを常にサポートしていません。その場合、それらはsurefireと互換性がなく、おそらくライブラリ/ベンダーに問題を報告する必要があります。または、フォークされたVMがいくつかの理由でクラッシュすることもあり、これもこの問題を引き起こす可能性があります。VMのクラッシュを示す従来の「hs_err *」ファイルを探すか、テストの実行時に実行中のmavenからのログ出力を調べます。クラッシュしたプロセスからの「異常な」出力の一部は、コンソール/ログにダンプされる場合があります。これがCI環境で発生し、しばらく実行した後でないと、テストスイートが何らかのOSレベルのリソースをリークし、実行のたびに状況が悪化する可能性があります。通常のOSレベルの監視ツールは、いくつかの兆候を与えることがあります。


9

同じ問題に直面していた、ubuntu上のjava 8

その後、https://stackoverflow.com/a/53016532/1676516に遭遇しました

これは、Java 8を使用するsurefireプラグインバージョン2.22.1の最近のバグのようですhttps://issues.apache.org/jira/browse/SUREFIRE-1588

ローカルmvn設定を通じて推奨される回避策を実行しました ~/.m2/settings.xml

<profiles>
    <profile>
        <id>SUREFIRE-1588</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <argLine>-Djdk.net.URLClassPath.disableClassPathURLCheck=true</argLine>
        </properties>
    </profile>
</profiles>

1
より最近のバージョン3.0.0-M1(たとえば)を追加するだけで問題が解決しました。
Galigator

6

今日も同じ問題がありましたが、実際の問題はメッセージとともにログのさらに上位で報告されましたCannot use a threadCount parameter less than 1; 1 > 0<threadCount>1</threadCount>surefire-plugin設定を追加すると、他のエラーが消えました。

完全なプラグイン構成:
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.18.1</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.18.1</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-testng</artifactId>
                    <version>2.18.1</version>
                </dependency>
            </dependencies>
            <configuration>
                <threadCount>1</threadCount>
            </configuration>
        </plugin>

...そしてはい、下位互換性の理由から、このテストフレームワークではjunitとtestngの両方を使用しています。


6

JDK 1.8.0_でJacocoプラグインを使用してmvnコマンドを実行すると、同様の問題が発生しました65

[INFO]
A fatal error has been detected by the Java Runtime Environment:

JRE version: Java(TM) SE Runtime Environment (8.0_65-b17) (build 1.8.0_65-b17).........
Problematic frame:
PhaseIdealLoop::build_loop_late_post(Node*)+0x144
............
............
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19:test (default-test) on project 

 The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

JDKにバグがあったhttps://bugs.openjdk.java.net/browse/JDK-8081379

そして解決策は、パラメーター-XX:-UseLoopPredicateを指定してmvn clean installを実行することでした。

または、JDKを更新するだけです(新しいマイナーバージョンが機能すると思います)。


6

maven-surefile-pluginのuseSystemClassLoaderをオフにすると役立つはずです

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <useSystemClassLoader>false</useSystemClassLoader>
            </configuration>
        </plugin>

1
これは私のためにそれを修正したものです。私はgitlabからキューに入れられたDockerイメージにアーティファクトを介してMavenを構築しています。代表的なセットアップを機能させるのは困難でした。surefire設定の多くのオプションを試した後、これによりバージョン2.22.0で修正されました。
Richard Bown

1
Gitlab CIのすべてのmavenジョブにこのオプションを追加する必要があり、その理由はわかりません。
cljk

5

誰かがカスタムのargLine引数を含めている場合は、メモリ割り当ての問題の原因である可能性が高いため、再検討する必要があります。

例(私は以前使用していた):

<argLine>XX:MaxPermSize=4096m ${argLine}</argLine>

今私はハード指定された値を使用します:

<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>

何らかの理由で、JacocoなどのSurefireと統合するアプリケーションは、ビルド時に行われるテストと共存するのに十分なメモリを要求しないでください。


5

Jenkins Dockerコンテナーでもこの問題に遭遇しました(jenkins:lts、jenkins、jenkins:slim、jenkins:slim-ltsを試してみました。すべてのリポジトリーを調べて、各プロジェクトのpomを更新したくなかったので、 disableClassPathURLCheckをmavenコマンドライン呼び出しに追加しました:

mvn test -DargLine="-Djdk.net.URLClassPath.disableClassPathURLCheck=true"

5

maven surefire 2.21.0を使用して、reuseForksオプション値をtrueからfalseに変更する問題を解決しまし

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <configuration>
                <reuseForks>false</reuseForks>
            </configuration>
        </plugin>
    </plugins>
</build>

ビルドの下の私の設定セクション全体は次のようになりました:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.21.0</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
                <skip>false</skip>
                <reuseForks>false</reuseForks>
                <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                <argLine>-Dfile.encoding=UTF-8</argLine>
                <useSystemClassLoader>false</useSystemClassLoader>
                <includes>
                    <!--Test* classes for the app testing -->
                    <include>**/directory/Test*.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

4

マシンが64ビットか32ビットかを確認する必要があります。マシンが32ビットの場合、メモリ引数は496未満であっても4096を超えてはなりません。ただし、マシンが64ビットの場合は、Java 64ビットをインストールし、Java 64ビットインストールを指すmvn.batにJAVA_HOMEを指定します。


4

提供された回答のいずれもが問題を解決しなかったというケースに遭遇しました。これは、たまたまlog4jとSLF4J / logbackを使用しているレガシーアプリケーションでした。

以前の状況:clean testEclipse内から起動したときにビルドは正常に実行されていましたが、コマンドラインで起動すると、このエラーが発生しました。CIはCircleCI上に構築され、問題なく動作しました。

私がしたこと:純粋な推測ではありませんが、適切な設定logback-test.xmlを行い、ログの詳細度を下げます。驚いたことに、このエラーは発生しなくなったので、コマンドラインからプロジェクト(およびこのエラーが発生していたモジュール)をビルドできるようになりました。

私のポイントは、ロギングフレームワークが使用または構成されいる方法別の説明かもしれないということです。

それは本当にlog4jとlogbackの間の矛盾でしたか?それとも、テストによって生成された大量のログが何らかの理由でコマンドラインバッファをオーバーフローしただけなのでしょうか。知りません。それは私には謎のままです。


これは実際に問題を解決/回避/回避できるため、賛成票を投じます。私はWindowsでslf4jとsl4j-simpleを使用していますが、出力が遅いのでこの方向も指摘されました。System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY、 "warn");を設定します。トリックをしました。maven-surefire-pluginを2.18.1にダウングレードすることもできました。
marcus

4

私はJava 12にアップグレードした後に同様の問題に直面しました、私にとっての解決策はjacocoバージョンを更新することでした <jacoco.version>0.8.3</jacoco.version>


これは確かに私のプロジェクトで抱えていた問題でした。
残念なことに

4

バージョン2.22.2には、フォークされたJVMに関する実際の問題があります。バージョン2.20を使用してください-それは魅力のように動作します!


<groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>

うーん、これは実際に役立ちます!
ジェン張

ええ、v2.22.2に問題がありmaven:3.6-jdk-8-alpineます。とても迷惑!
キムチマン

3

私は最近、Bambooでコンテナー化されたjarアプリケーションを構築しているときに、このエラーに陥っていました。

org.apache.maven.surefire.booter.SurefireBooterForkException:フォークされたVMが適切に別れを告げることなく終了した

何時間もの調査の結果、修正しました。そして、ここで私の解決策を共有することは有用だと思いました。

そのmvn clean packageため、Dockerコンテナー内のJavaアプリケーションに対してコマンドを実行するたびにエラーが発生します。私はMavenのエキスパートではありませんが、Mavenの依存関係としてSpring-Bootに含まれているSurefireとJunit4プラグインに問題がありました。

これを修正するには、Junit5をJunit4に置き換え、Surefireプラグインをオーバーライドする必要がありますpom.xml

1.Spring Boot依存関係の挿入の除外:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <!-- FIX BAMBOO DEPLOY>
    <exclusions>
        <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
    <!---->
</dependency>

2.新しいJunit5依存関係を追加します。

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-runner</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-surefire-provider</artifactId>
    <version>1.1.0</version>
    <scope>test</scope>
</dependency>

3.プラグインセクション内に新しいプラグインを挿入する

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.1.0</version>
        </dependency>
    </dependencies>
</plugin>

竹のビルドを修復するには、これで十分です。すべてのJunit4テストを変換してJunit5をサポートすることも忘れないでください。


2

これをpom.xmlに設定するとうまくいきました。ただし、ドキュメントで他の回避策を確認する必要があり ますhttps://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html

       <plugin>

            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <!--these strange settings fixes a chrash and dumpstream from surefire when run from command line
                    Caused by: java.lang.ClassNotFoundException: org.apache.maven.surefire.booter.ForkedBooter
                -->
                <useSystemClassLoader>true</useSystemClassLoader>
                <useManifestOnlyJar>false</useManifestOnlyJar>
            </configuration>
        </plugin>

2

テストで使用されたフォークされたJVMのメモリが不足しています。解決策は、JVMのフォークを無効にしてメインJVMでテストを実行し、十分なメモリがあることを確認するか、引数を渡してフォークされたJVMのメモリを増やすことです。

この回答の解決策を確認してください



1

この問題に対する私の解決策は、私のコンピューターのメモリを窒息させていたクロムブラウザーを閉じることでした🙄


1

Javaオプションを設定できます

SET JAVA_OPTS='-Xmx1024m' XX:+UseLoopPredicate

mvn clean install


1

Windows(OpenJDK11、Maven 3.6.0、SUREFIRE 3.0.0-M1)では、根本的な原因がわかりました。

# Created at 2018-11-14T14:28:15.629
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006c7500000, 522190848, 0) failed; error='The paging file is too small for this operation to complete' (DOS error/errno=1455)

このように、ページングファイルのサイズを増やすことで解決しました。


Linux(4.4.0-145-generic、amd64)では、JenkinsジョブのOracle JRE 8からAdoptOpenJDK_8u202b08に変更され、「fork」エラーの生成が開始されました。-"ゴールのorg.apache.maven.plugins :maven-surefire-plugin:2.19.1:testが失敗しました:フォークされたVMは、適切に別れを告げることなく終了しました。VMクラッシュまたはSystem.exitが呼び出されましたか?」-Oracle JREに戻し、エラーが停止しました。これは、この問題を抱える唯一の仕事(およそ300人)です。幸い、これは内部プロジェクトに過ぎず、Sun / Oracle JREで維持できるクライアント向けの成果物ではありません。
Robert

1

上記すべてを試してもうまくいきませんでした。以下の解決策は私のために働きます:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
    <argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>


この正確なプラグインのバージョンは私を助けました。私の構成は、方法によって、次のとおりです。 Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T21:41:47+03:00) Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_201\jre Default locale: en_US, platform encoding: Cp1252 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
tworogue


1

私は提供されたすべてのソリューション(フォーク、システムローダー、より多くのメモリなど)を試しましたが、何も機能しませんでした。

環境:ビルドはgitlab ci環境で失敗し、Dockerコンテナー内でビルドが実行されました。

解決策:バージョン2.20.1でsurefirepluginを使用し、2.21.0以降(2.22.1を使用)にアップグレードすると問題が修正されました。

原因: SUREFIRE -1422 -surefireはコマンドを使用しますps環境では使用できず、「クラッシュ」を引き起こしました。この問題は2.21.0以降で修正されています。

別の質問からのこの回答のおかげで:https : //stackoverflow.com/a/50568662/2970422


1

ポート5005でSeleniumテストコードをリモートデバッグしているときに、MacOSでもこの問題に遭遇しました。この問題は、残っている確実に分岐したJVMが実行を続けていることが原因であることが判明しました。Eclipse IDEターミナルへのログ出力には、Addressがすでに使用されているという根本的な問題が示されていませんでした。ログメッセージは、Eclipseが実際に実行しようとしたものと同じコマンドをMacOS端末で実行したときにのみ表示されました。

/bin/sh -c cd /path/to/your/project/directory && /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre/bin/java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -jar /path/to/target/surefire/surefirebooter230340673926465933.jar /path/to/target/surefire 2019-06-28T10-50-02_140-jvmRun1 surefire6455775580414993159tmp surefire_02461993428448591420tmp

不正なJVMインスタンスを殺す(アクティビティモニターでJavaプロセス名を探す)と、問題が修正されました。ちなみに、open jdk 8(v1.8.0_212)で問題なく、surefireプラグインバージョン2.21.0を実行しています。すべてのパスはビルド環境に固有であり、場合によってはポート(アドレス= 5005)に固有であることに注意してください。


1

Mavenテストを使用して単体テストを実行すると、同じ問題に直面していました。確実なバージョンの変更を試みましたが、機能しません。EARLIER:(問題が発生していたとき):javacはjdk 1.8からのものjavaはjdk 1.11からのJava binを指しています。現在:(問題が解決されたとき):javacとjavaの両方がjdk 1.8のビン

Tejaよろしく。


0

テストクラスの静的メンバー変数がオブジェクトを作成するメソッド(クラス全体のテストケースで使用された)を呼び出し、メソッドが例外を引き起こした後に、このエラーが発生しました。

// Object created inside test class by calling a static getter.
// Exception thrown in getter:
private static Object someObject = SomeObject.getObject(...);

// ... <Object later used in class>

一部の修正には、各テストケース内でオブジェクトを再作成し、それに応じて例外をキャッチすることが含まれます。または、@ BeforeTestメソッド内でオブジェクトを初期化して、適切に構築されるようにします。


0

私の場合、問題は非常に長いワークスペースパスに関連していました。それで、パスのリファクタリングを行い、これで問題が解決しました。


それはWindowsマシン上でしたか?
hithwen、2016年

はい、Windowsで実行されています。
thiago-devel 2016年

どのようにしてそれを見つけましたか?
dzieciou
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.