10 votes

Maven surefire et JDK 11

Je essaie de faire fonctionner Maven surefire sous JDK 11 mais je continue à obtenir ces erreurs:

  1. Si je définis reuseForks à true:
  Une erreur s'est produite en démarrant le fork, vérifier la sortie dans le journal
  Code de sortie du processus: 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)
  1. Si je le définis à false:
L'exécution default-test de l'objectif org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test
a échoué: java.lang.ClassNotFoundException: org.apache.maven.plugin.surefire.StartupReportConfiguration

J'ai trouvé ceci et ceci lien qui décrivent le même problème mais ils n'ont pas de solution.

Pour reproduire ce bug j'ai créé ce dépôt git

12voto

nullpointer Points 1135

Il semble que lors de l'utilisation d'un projet modulaire pour tester, vous devez définir forkCount comme 0 :

    org.apache.maven.plugins
    maven-surefire-plugin
    3.0.0-M1

        0 
        false

        true

            Monocle
            Headless
            d3d

            --add-exports javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
            --add-exports javafx.graphics/com.sun.glass.ui=ALL-UNNAMED

Citant cet article

Lorsque module-info.java est présent et que le processus de bifurcation est activé, surefire crée un chemin de classe mixte avec des modules et des modules anonymes causant des problèmes de visibilité des modules et empêchant le démarrage de l'application.


Remarque : Désactiver les paramètres de configuration forkCount et reuseForks entraîne le lancer de l'exception org.apache.maven.surefire.booter.SurefireBooterForkException, similaire à celle signalée dans SUREFIRE-1528.

Si cela peut aider les développeurs de la communauté Maven, le dump d'exécution de la même session se lit comme suit :

# Créé le 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.(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)

Voici la ligne de code dans le référentiel source.

6voto

J'ai trouvé la solution ici :

https://winterbe.com/posts/2018/08/29/migrate-maven-projects-to-java-11-jigsaw/

J'ai dû ajouter.

    --illegal-access=permit

    org.apache.maven.plugins
    maven-surefire-plugin
    2.22.0

            --illegal-access=permit

    org.apache.maven.plugins
    maven-failsafe-plugin
    2.22.0

            --illegal-access=permit

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X