web-dev-qa-db-fra.com

ErrorListener manquant lors de l'utilisation de maven-jaxb-plugin avec Eclipse et m2e

J'ai configuré un projet uniquement pour le plug-in "org.jvnet.jaxb2.maven2:maven-jaxb2-plugin". Cela fonctionne mais je n'aime pas le message d'erreur affiché dans l'éditeur Eclipse pour le" pom.xml ". Le message indique: 

Execution default of goal org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.13.1:generate failed: A required class was missing while executing org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.13.1:generate: com/Sun/xml/bind/api/ErrorListener

Le pom et par là tout le projet est marqué comme une erreur.

Voici mon pom.xml:

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>de.gombers.lernen.jaxb</groupId>
    <artifactId>PlayWithJAXB</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9.1</version>
                <configuration>
                    <show>private</show>
                    <nohelp>true</nohelp>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.13.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <extension>true</extension>
                    <useDependenciesAsEpisodes>true</useDependenciesAsEpisodes>
                    <outputDirectory>target/generated-sources/jaxb</outputDirectory>
                    <packageName>de.gombers.lernen.jaxb.generated</packageName>
                    <schemaDirectory>src/main/resources</schemaDirectory>
                    <schemaFiles>Employee.xsd</schemaFiles>
                </configuration>
            </plugin>

        </plugins>


    </build>

    <dependencies>
        <dependency>
            <groupId>org.Apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>

        <!-- JAXB -->
        <dependency>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin-core</artifactId>
            <version>0.13.1</version>
        </dependency>
        <dependency>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb22-plugin</artifactId>
            <version>0.13.1</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.maven</groupId>
            <artifactId>maven-project</artifactId>
            <version>2.0.9</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>org.Apache.maven</groupId>
            <artifactId>maven-settings</artifactId>
            <version>2.0.9</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-container-default</artifactId>
            <version>1.0-alpha-9-stable-1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
        </dependency>
        <dependency>
            <groupId>com.Sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.2.7</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2.7</version>
        </dependency>
        <dependency>
            <groupId>com.Sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.7</version>
        </dependency>
        <dependency>
            <groupId>com.Sun.xml.bind</groupId>
            <artifactId>jaxb-jxc</artifactId>
            <version>2.2.7</version>
        </dependency>
        <dependency>
            <groupId>com.Sun.xml.bind</groupId>
            <artifactId>jaxb-xjc</artifactId>
            <version>2.2.7</version>
        </dependency>


        <!-- HELPERS -->
        <dependency>
            <groupId>de.gombers</groupId>
            <artifactId>BasicTools</artifactId>
            <version>1.0.0</version>
        </dependency>

        <!-- LOGGING -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.13</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.2</version>
        </dependency>

        <!-- JUNIT -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.8.4</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

        <!-- JSON converter -->
        <dependency>
            <artifactId>jackson-core</artifactId>
            <groupId>com.fasterxml.jackson.core</groupId>
            <version>2.3.3</version>
        </dependency>
        <dependency>
            <artifactId>jackson-annotations</artifactId>
            <groupId>com.fasterxml.jackson.core</groupId>
            <version>2.3.3</version>
        </dependency>
        <dependency>
            <artifactId>jackson-databind</artifactId>
            <groupId>com.fasterxml.jackson.core</groupId>
            <version>2.3.3</version>
        </dependency>

    </dependencies>
</project>

Ma commande "mvn validate" n'indique aucune erreur et le ErrorListener réclamé est fourni avec l'artefact "com.Sun.xml.bind:jaxb-core". Et comme déjà dit, lors de l'exécution du projet pour générer des sources, cela fonctionne bien. Quelqu'un at-il exécuté ce plugin et peut-il partager son fichier pom.xml?

12
Ulrich

La mise à jour du plugin vers version 0.13.3 corrige ce problème.

11
Mahmoud Saleh

J'ai résolu ce problème en supprimant les JRE de mes préférences Eclipse (Java> JRE installés) et en ne laissant que le JDK sélectionné. Même si les JRE n'ont pas été sélectionnés, ils posent toujours le problème et doivent être supprimés. J'ai pu laisser les JRE sur mon système . Ce message m'a été utile: http://diggingthroughcode.blogspot.ca/2016/05/trouble-with-maven-jaxb2-plugin-and.html

[Mise à jour] Un autre collègue vient de le découvrir et, pour lui, il semble que le facteur déterminant était le type de Java utilisé pour exécuter Eclipse. Il n'utilisera pas non plus ce que Java_HOME est configuré, mais le premier runtime Java disponible. Il a supprimé tous les jres de son système et n'a laissé qu'un jdk, ce qui a résolu le problème. Je crois que le facteur critique est de savoir si Eclipse fonctionne avec un jre ou un jdk. Lorsque j'ai résolu le problème, j'ai supprimé un jre de mon système et c'était probablement ce qu'utilisait Eclipse. Avec ce manque, il est passé à un jdk même si j’avais d’autres jres disponibles. Si vous ne souhaitez pas supprimer jres de votre système, vous pouvez spécifier le type de runtime Java utilisé par Eclipse ( Comment exécuter Eclipse avec une version différente de Java? ). Si rien n'est spécifié, Eclipse déterminera le runtime Java à utiliser ( Découvrez sur quoi JVM Eclipse s'exécute ).

8
Darren Reimer

Ce problème était dû au fait qu’Eclipse s’exécutait sur un JRE au lieu d’un JDK.

Modifiez votre fichier Eclipse.ini et pointez sur un JDK approprié - par exemple

-vm C:/Program Files (x86)/Java/jdk1.7.0_55/bin/javaw.exe
4
leftbit

Même problème ici le résoudre quand je diminue la version.

De :

            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.13.1</version>

À: 

            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.8.1</version>

MODIFIER:

J'ai tout essayé:

-Supprimer tout le JRE d'Eclipse

-Lancement d'Eclipse avec JDK

EDIT2:

Vérifiez votre dossier .m2. Trouvez le pot problématique et vérifiez sa taille. Dans certaines situations, Maven aurait pu ne pas télécharger la dépendance correctement et le .jar peut exister, mais avoir la taille 0kb. SI OUI: Supprimez le .jar et laissez Maven le télécharger à nouveau.

2
Lazar Lazarov

Tu peux essayer 

<build>
    <pluginManagement>
        <plugins>
            <plugin> ... </plugin>
            <plugin> ... </plugin>
                  ....
        </plugins>
    </pluginManagement>
</build>
1
Vivek Padigela

J'ai eu le même problème, je sais que cela pourrait être un peu ridicule, mais essayez de vérifier si toutes les ressources (wsdl et xsd) sont disponibles dans l'URL que vous donnez dans le fichier pom.xml. 

0
Nicolas Ordonez Chala

J'avais un problème similaire:

Execution default of goal org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.13.3:generate failed: Prefix '' is already bound to ''

Dans mon cas, cela était dû à l'utilisation de Java 10 sur un projet Java 8. Le passage à la version Java correcte a résolu le problème.

0
Torbjørn M