Maven surefireをJDK 11で実行しようとしていますが、次のエラーが発生し続けます:
reuseForks
をtrueに設定した場合:Error occurred in starting fork, check output in log Process Exit Code: 1 at org.Apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.Java:670) at org.Apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.Java:283) at org.Apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.Java:246)
Execution default-test of goal org.Apache.maven.plugins:maven-surefire- plugin:3.0.0-M1:test failed: Java.lang.ClassNotFoundException: org.Apache.maven.plugin.surefire.StartupReportConfiguration
同じ問題を説明する this および this リンクを見つけましたが、それらには解決策がありません。
このバグを複製するために作成した this git repo
test
にモジュラープロジェクトを使用しているときに、forkCount
を0
として設定する必要があるようです。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<forkCount>0</forkCount> <!-- changed this to 0 -->
<reuseForks>false</reuseForks>
<!-- <threadCount>1</threadCount> --> <!-- shall be used with 'parallel' -->
<printSummary>true</printSummary>
<!-- <skipTests>false</skipTests> --> <!-- defaults to false -->
<!-- run test in headless mode -->
<systemPropertyVariables>
<glass.platform>Monocle</glass.platform>
<monocle.platform>Headless</monocle.platform>
<prism.order>d3d</prism.order>
</systemPropertyVariables>
<argLine>
--add-exports javafx.graphics/com.Sun.javafx.application=ALL-UNNAMED
--add-exports javafx.graphics/com.Sun.glass.ui=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
引用 この記事から
module-info.Java
が存在し、forkプロセスがenabledの場合、surefireはモジュールと名前のないモジュールを含むmixedクラスパスを作成し、モジュールを引き起こします可視性の問題とアプリケーションの起動の妨げ。
注:forkCount
およびreuseForks
構成パラメーターの無効化、 SUREFIRE-1528 で報告されたものと同様に、org.Apache.maven.surefire.booter.SurefireBooterForkException
がスローされます。
これがMavenコミュニティの開発者に役立つ場合、同じ実行からの実行ダンプは次のようになります。
# Created at 2018-11-23T09:31:53.631
Corrupted STDOUT by directly writing to native stream in forked JVM 1. Stream 'Error occurred during initialization of boot layer'.
Java.lang.IllegalArgumentException: Stream stdin corrupted. Expected comma after third character in command 'Error occurred during initialization of boot layer'.
at org.Apache.maven.plugin.surefire.booterclient.output.ForkClient$OperationalData.<init>(ForkClient.Java:507)
at org.Apache.maven.plugin.surefire.booterclient.output.ForkClient.processLine(ForkClient.Java:210)
at org.Apache.maven.plugin.surefire.booterclient.output.ForkClient.consumeLine(ForkClient.Java:177)
at org.Apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer$Pumper.run(ThreadedStreamConsumer.Java:88)
at Java.base/Java.lang.Thread.run(Thread.Java:834)
私はここに解決策を見つけました:
https://winterbe.com/posts/2018/08/29/migrate-maven-projects-to-Java-11-jigsaw/
追加しなければなりませんでした。
<argLine>
--illegal-access=permit
</argLine>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<argLine>
--illegal-access=permit
</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<argLine>
--illegal-access=permit
</argLine>
</configuration>
</plugin>