簡體   English   中英

在 Eclipse 和 m2e 中使用 maven-jaxb-plugin 時缺少 ErrorListener

[英]ErrorListener missing when using maven-jaxb-plugin with eclipse and m2e

我已經為插件“ org.jvnet.jaxb2.maven2:maven-jaxb2-plugin"設置了一個項目。 它可以工作,但我不喜歡 Eclipse 編輯器中為“pom.xml”顯示的錯誤消息。 該消息指出:

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 ?

將插件更新到0.13.3 版修復了這個問題。

我通過從我的 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 運行。 當我解決這個問題時,我確實從我的系統中刪除了一個 jre,這可能是 eclipse 一直在使用的。 由於缺少這個 jre,它切換到 jdk,即使我有其他 jres 可用。 如果您不想從系統中刪除 jres,您可以指定 eclipse 應該使用的 java 運行時( 如何使用不同的 java 版本運行 eclipse? )。 如果未指定任何內容,eclipse 將確定要使用的 java 運行時( 找出 JVM Eclipse 正在運行的內容)。

此問題是由 eclipse 運行在 JRE 而不是 JDK 上引起的。

編輯您的 eclipse.ini 並指向合適的 JDK - 例如

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

同樣的問題 - 當我降低版本時解決了它。

從 :

            <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

編輯2:

檢查您的.m2文件夾。 找到有問題的 jar 並檢查其大小。 在某些情況下,Maven 可能沒有正確下載依賴項, .jar可以存在但大小為0kb 如果是:刪除.jar並讓 Maven 再次下載它。

你可以試試

<build>
    <pluginManagement>
        <plugins>
            <plugin> ... </plugin>
            <plugin> ... </plugin>
                  ....
        </plugins>
    </pluginManagement>
</build>

我有一個類似的問題:

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

就我而言,這是由於在 Java 8 項目中使用了 Java 10。 切換到正確的 Java 版本解決了它。

我遇到了同樣的問題,我知道這可能有點傻,但請嘗試檢查您在 pom.xml 中提供的 url 中的所有資源(wsdl 和 xsd)是否可用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM