プラグイン「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を共有できますか?
プラグインをバージョン0.13.に更新すると、この問題が修正されます。
私は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を見つけます )。
この問題は、EclipseがJDKではなくJREで実行されていることが原因でした。
Eclipse.iniを編集して、適切なJDKを指定します-たとえば
-vm C:/Program Files (x86)/Java/jdk1.7.0_55/bin/javaw.exe
あなたが試すことができます
<build>
<pluginManagement>
<plugins>
<plugin> ... </plugin>
<plugin> ... </plugin>
....
</plugins>
</pluginManagement>
</build>
バージョンを下げると、同じ問題がここで解決します。
から:
<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に再度ダウンロードさせます。
私は同じ問題を抱えていました、それはちょっとばかげているかもしれませんが、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バージョンの解決に切り替えましたそれ。