web-dev-qa-db-fra.com

JMH Impossible de trouver la ressource:/META-INF/BenchmarkList

Je ne parviens pas à exécuter de simples tests de performances JMH dans Eclipse. Dépendances Maven:

        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-core</artifactId>
            <version>1.12</version>
        </dependency>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-generator-annprocess</artifactId>
            <version>1.12</version>
        </dependency>

Code Java:

public class BTest {
    @Benchmark
    public void test() {
        // todo
    }

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                 .include(BTest.class.getSimpleName())
                  .build();

        new Runner(opt).run();
    }
}

Résultat de l'exécution:

Exception dans le fil "main" Java.lang.RuntimeException: ERREUR: impossible de trouver la ressource:/META-INF/BenchmarkList à Org.openjdk.jmh.runner.AbstractResourceReader.getReaders (AbstractResourceReader) .Java: 96) À org.openjdk.jmh.runner.BenchmarkList.find (BenchmarkList.Java:104) À org.openjdk.jmh.runner.Runner.Runner.Runner.internalRun (Runner.Java : 256) à l'adresse Org.openjdk.jmh.runner.Runner.run (Runner.Java:206) à Avec.test.BTest.main (BTest.Java:24)

Peut-être que le problème est que je l’utilise à partir d’Eclipse. 

Merci pour toute aide.

16
riva

Finalement découvert. Il y avait un problème avec le plugin manquant exec-maven-plugin

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>run-benchmarks</id>
            <phase>integration-test</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <classpathScope>test</classpathScope>
                <executable>Java</executable>
                <arguments>
                    <argument>-classpath</argument>
                    <classpath />
                    <argument>org.openjdk.jmh.Main</argument>
                    <argument>.*</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>
8
riva

J'ai réalisé que j'avais déjà exec-maven-plugin dans mon pom parent, comme mentionné dans la réponse attendue, mais je devais exécuter mvn clean install comme indiqué dans https://stackoverflow.com/a/40748670 pour corriger l'erreur.

1
ankitkpd

Ayant eu la même erreur; et exécuter les tests de maven ou intellij ne fonctionnait pas. J'ai réalisé que le problème était que j'avais écrit la référence en Kotlin. Changer le code en Java a réglé le problème.

0
PeterK