Printemps de Démarrage ne parvient pas à exécuter maven-surefire-plugin ClassNotFoundException org.apache.maven.surefire.booter.ForkedBooter
L'exécution de maven (3.5.2) de la construction d'un Printemps de Démarrage 2.0.2.COMMUNIQUÉ de candidature (généré par le web de l'initialiser avec web dépendances) échec de l'exécution de la maven-surefire-plugin disant:
Erreur: impossible de trouver ou charger la classe principale
org.apache.maven.surefire.booter.ForkedBooterCausés par: java.lang.ClassNotFoundException: org.apache.maven.surefire.booter.ForkedBooter
Pourquoi est-ce arrivé? Est-ce un problème de démarrage + infaillible intégration = un bug?
Pour référence, les dépendances qui semblent pertinentes sont:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/>
</parent>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
...
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
- Le en amont question montre trois solutions de contournement (les deux énumérés ici, plus
forkCount
0), mais aucun n'est sans problèmes ☹
Vous devez vous connecter pour publier un commentaire.
Solution de contournement pour le problème était de remplacer le Printemps de Démarrage du
maven-surefire-plugin
définition et de définiruseSystemClassLoader
àfalse
. Lire Surefire docs pour plus de détailsLa
<useSystemClassLoader>false</useSystemClassLoader>
solution provideded par jediz a permis à mon infaillible tests à exécuter, mais est tombé en classe de chargement dans certains de mes Printemps de Démarrage des tests d'intégration.Suivantes maven-surefire-plugin de configuration a fonctionné pour moi:
Pour moi, la solution a été d'exécuter mvn comme
D'autres idées (ce qui donne le système de la propriété pour le maven liste des arguments, des changements dans différents
pom.xml
,settings.xml
) ne fonctionne pas.Malgré qu'il ne contient pas la solution exacte, aussi cette réponse a été très utile pour moi de faire ce clair, que c'est un malheureux de la coopération des deux, seul inoffensif bugs dans le Ubuntu JDK et Maven Plugin Surefire.
Récente de Debian (buster) avec le même JDK et Maven versions ne semblent pas touchés par le problème, mais Ubuntu (xenial) n'.
La solution exacte est à venir à partir de cette réponse.
Mise à jour le maven-surefire-plugin de 2.12.4 à 3.0.0-M1 a fonctionné pour moi. Le projet n'a pas explicitement utilisé le plugin, j'ai donc dû ajouter un nouveau plugin de dépendance.
J'ai été en mesure de supprimer le maven-surefire-plugin de mon POM après l'ajout de ce à le haut de mon POM (à l'intérieur de la
<project>
nœud)Pourquoi dois-je pense que c'est la bonne réponse?
mvn versions:display-plugin-updates
il montre que c'est en prenant le maven-surefire-plugin 3.0.0-M3 à partir de super-pom, qui jusqu'à présent semble avoir ce problème résolu.[WARNING] The project com.example:pom:0.0.2 uses prerequisites which is only intended for maven-plugin projects but not for non maven-plugin projects. For such purposes you should use the maven-enforcer-plugin. See https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html