JaCoCo ne Pouvez pas ajouter une autre classe du même nom: org/hamcrest/BaseDescription
Salut, je suis à frapper l'exception suivante lors de l'exécution d'un JaCoCo couverture:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.5.8.201207111220</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Error while creating report: Can't add different class with same name: org/hamcrest/BaseDescription
java.lang.IllegalStateException: Can't add different class with same name: org/hamcrest/BaseDescription
at org.jacoco.core.analysis.CoverageBuilder.visitCoverage(CoverageBuilder.java:89)
at org.jacoco.core.analysis.Analyzer$1.visitEnd(Analyzer.java:79)
at org.objectweb.asm.ClassAdapter.visitEnd(Unknown Source)
at org.jacoco.core.internal.flow.ClassProbesAdapter.visitEnd(ClassProbesAdapter.java:128)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:94)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:115)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:155)
at org.jacoco.core.analysis.Analyzer.analyzeArchive(Analyzer.java:135)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:158)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:183)
at org.jacoco.maven.ReportMojo.createBundle(ReportMojo.java:280)
at org.jacoco.maven.ReportMojo.createReport(ReportMojo.java:256)
at org.jacoco.maven.ReportMojo.executeReport(ReportMojo.java:230)
at org.jacoco.maven.ReportMojo.execute(ReportMojo.java:208)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
- Vers 2018, et cela devient vraiment pertinentes grâce au multi-libération des Bocaux PEC-238
Vous devez vous connecter pour publier un commentaire.
Il y a deux façons d'éviter cela:
1)Renommer l'un des doublons: j'ai vu ce problème assez souvent, quand il s'agit de projets maven. Même si ces deux classes sont dans deux modules différents, ayant les mêmes noms pour les deux classes différentes n'est pas vraiment une bonne idée.
2)Exclure l'un d'eux: reportez-vous cette fil pour plus d'informations.
Je suis d'accord avec rb512. Un de plus, cas de la zone où cette erreur peut venir est, pendant le processus de compilation si nous sommes à l'aide de JIBX/WST etc ou similaires, d'autres étapes ou processus qui crée de la dynamique des fichiers de classe (au moment de la compilation) c'est à dire pour lesquels nous n'avons pas valide fichier source (.java/.groovy, etc) dans l'espace de travail.
Dans ce cas, votre espace de travail supplémentaire fichier de classe(s) et quand jacoco va essayer de générer le rapport, il va d'erreur avec la même erreur pour un duplicata de la classe. Si vous trouvez cette erreur en raison de ce cas, vous devez supprimer les fichiers de classe avant d'exécuter jacoco rapports
Si vous utilisez Gradle (Maven, faire de même en pom Maven .fichier xml), voir la
doFirst
bloc ci-dessous qui est en train de faire le tour.J'ai frappé à la même question que vous. Il s'avère que j'avais deux pots dans mon dossier de projet qui a fait la même chose, même si un seul d'entre eux était dans le build path. Vérifiez si vous avez plus d'un hamcrest jar dans votre code.