我已经为插件设置了一个项目" 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:
4.0.0 de.gombers.lernen.jaxb PlayWithJAXB 0.0.1-SNAPSHOT UTF-8 org.apache.maven.plugins maven-compiler-plugin 3.1 1.8 org.apache.maven.plugins maven-javadoc-plugin 2.9.1 private true org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 0.13.1 generate true true target/generated-sources/jaxb de.gombers.lernen.jaxb.generated src/main/resources Employee.xsd org.apache.commons commons-lang3 3.4 org.jvnet.jaxb2.maven2 maven-jaxb2-plugin-core 0.13.1 org.jvnet.jaxb2.maven2 maven-jaxb22-plugin 0.13.1 org.apache.maven maven-project 2.0.9 org.apache.maven.plugin-tools maven-plugin-annotations 3.4 org.apache.maven maven-settings 2.0.9 org.codehaus.plexus plexus-container-default 1.0-alpha-9-stable-1 junit junit 4.8.1 com.sun.xml.bind jaxb-core 2.2.7 javax.xml.bind jaxb-api 2.2.7 com.sun.xml.bind jaxb-impl 2.2.7 com.sun.xml.bind jaxb-jxc 2.2.7 com.sun.xml.bind jaxb-xjc 2.2.7 de.gombers BasicTools 1.0.0 org.slf4j slf4j-api 1.7.13 ch.qos.logback logback-classic 1.1.2 junit junit 4.12 org.mockito mockito-all 1.8.4 javax.servlet servlet-api 2.5 jackson-core com.fasterxml.jackson.core 2.3.3 jackson-annotations com.fasterxml.jackson.core 2.3.3 jackson-databind com.fasterxml.jackson.core 2.3.3
我的" 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,你可以指定java运行时eclipse应该使用什么(如何使用不同的java版本运行eclipse?).如果没有指定任何内容,eclipse将确定要使用的java运行时(找出运行的JVM Eclipse).
此问题是由在JRE而非JDK上运行的Eclipse引起的。
编辑您的eclipse.ini并指向合适的JDK-例如
-vm C:/Program Files (x86)/Java/jdk1.7.0_55/bin/javaw.exe