web-dev-qa-db-ja.com

Eclipseおよびm2eでmaven-jaxb-pluginを使用するとErrorListenerが欠落する

プラグイン「org.jvnet.jaxb2.maven2:maven-jaxb2-plugin"」専用のプロジェクトを設定しました。これは機能しますが、「pom.xml」のEclipseエディター内に表示されるエラーメッセージが好きではありません。メッセージの状態:

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

Pomとこれによってプロジェクト全体がエラーであるとマークされます。

これが私の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>

私の "mvn validate"コマンドはエラーを記述せず、要求されたErrorListenerにはアーティファクト "com.Sun.xml.bind:jaxb-core"が提供されます。そしてすでに述べたように、ソースを生成するためにプロジェクトを実行するとき、それはうまく働きます。誰かがこのプラグインを実行していて、彼のpom.xmlを共有できますか?

17
Ulrich

プラグインをバージョン0.13.に更新すると、この問題が修正されます。

21
Mahmoud Saleh

私はEclipse設定(Java>インストール済みJRE)からJREを削除し、選択したJDKのみを残してこの問題を解決しました。 JREは選択されていませんが、問題が発生するため、削除する必要があります。システムにJREを残すことができました。この投稿は役に立ちました: http://diggingthroughcode.blogspot.ca/2016/05/trouble-with-maven-jaxb2-plugin-and.html

[更新]別の同僚がこれに遭遇しました、そして彼にとって、重要な要素は、JavaがEclipseを実行するために使用されていたようです。Java_HOMEの構成も使用しませんが、最初のJavaランタイムが利用可能です。彼はシステムからすべてのjresを削除し、jdkを残しただけで問題は解決しました。Eclipseがjreとjdkのどちらで実行されているかが重要な要素だと思います。問題を解決し、システムから1つのjreを削除しました。これはEclipseが使用していたものと思われます。このjreがないと、他のjresが使用可能であっても、jdkに切り替わりました。システムからjresを削除したくない場合JavaランタイムEclipseが使用する必要があるものを指定できます( 異なるJavaバージョン?)でEclipseを実行する方法 )。何も指定されていない場合EclipseはJava使用するランタイムを決定します( Eclipseが実行されているJVMを見つけます )。

8
Darren Reimer

この問題は、EclipseがJDKではなくJREで実行されていることが原因でした。

Eclipse.iniを編集して、適切なJDKを指定します-たとえば

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

あなたが試すことができます

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

バージョンを下げると、同じ問題がここで解決します。

から:

            <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>

編集:

私は他のすべてを試しました:

-EclipseからすべてのJREを削除する

-JDKでEclipseを起動する

EDIT2:

.m2フォルダを確認してください。問題のあるjarファイルを見つけ、そのサイズを確認します。状況によっては、Mavenが依存関係を適切にダウンロードできず、.jarが存在していても0kbサイズである可能性があります。 IF SO:.jarを削除して、Mavenに再度ダウンロードさせます。

3
Lazar Lazarov

私は同じ問題を抱えていました、それはちょっとばかげているかもしれませんが、pom.xmlで与えているURLですべてのリソース(wsdlとxsd)が利用可能かどうかを確認してみてください

私は同様の問題を抱えていました:

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

私の場合、これはJava 10プロジェクトでJava 8プロジェクトを使用しているためです。正しいJavaバージョンの解決に切り替えましたそれ。

0
Tmarty