Maven верный и JDK 11 - PullRequest
       18

Maven верный и JDK 11

0 голосов
/ 22 ноября 2018

Я пытаюсь заставить Maven surefire работать под JDK 11, но продолжаю получать следующие ошибки:

  1. Если я установлю 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)
Если установить значение false:
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

Я обнаружил эту и эту ссылку, описывающуюта же проблема, но у них нет никакого решения.

Для репликации этой ошибки я создал это git repo

1 Ответ

0 голосов
/ 23 ноября 2018

Похоже, что при использовании модульного проекта для 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 включен , верный сценарий создает смешанный путь к классам с модулями и безымянными модулями, вызывающий проблемы с видимостью модулей и препятствующий запуску приложения.


Примечание : отключение параметров конфигурации forkCount и reuseForks приводит к выбрасыванию org.apache.maven.surefire.booter.SurefireBooterForkException, аналогичноодин сообщается в SUREFIRE-1528 .

Если это могло бы помочь разработчикам из сообщества 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)

Вот строка кода в репозитории исходного кода.

...