我正在尝试使用 Java 8 构建一个 Confluence 插件。它可以使用 Java 7 正确构建。它使用 jaxb2-maven-plugin,其中定义的执行之一具有目标“schemagen”和阶段“generate-resources”抛出此错误:
[ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:schemagen (restTypes) on project bb-team-plugin:
Execution restTypes of goal org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:schemagen failed:
syntax error @[1,1] in file: MY_WORKDIR/target/generated-sources/jaxb/META-INF/sun-jaxb.episode -> [Help 1]
我拥有的绑定(bind)文件:
<jxb:bindings jxb:version="1.0" jxb:extensionBindingPrefixes="xjc"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<jxb:globalBindings>
<xjc:simple />
</jxb:globalBindings>
</jxb:bindings>
在 maven 中使用 -e 或 -X 不会抛出任何额外的有用输出,在执行配置中使用会抛出 SAXParseException 警告以及与上面提到的相同的错误。
我将我的 sun-jaxb.episode 与其他示例进行了比较(如本网站 https://github.com/highsource/maven-jaxb2-plugin/wiki/Using-Episodes ),它具有完全相同的结构,其中看起来没有任何畸形。
知道会发生什么吗?
最佳答案
这可能有点太晚了,或者不完全是您正在寻找的内容,但这可能对某人有帮助。
当我尝试使用 JAXB2 从带注释的类生成 XSD 时,我在项目中遇到了相同的语法错误(“文件中的语法错误 @[1,1]:”)。我相信该插件也在查看我的 xsd 文件,从而引发 SAXParseException,因此我在 pom.xml 中包含了一个排除过滤器,如下所示:
<schemaSourceExcludeFilters>
<myExcludes implementation="org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter">
<patterns>
<pattern>\.xsd</pattern>
</patterns>
</myExcludes>
</schemaSourceExcludeFilters>
更多信息:http://www.mojohaus.org/jaxb2-maven-plugin/Documentation/v2.2/schemagen-mojo.html
这对我来说是成功的。我之前尝试过的另一件事是从文件路径中删除空格(我的项目名称有空格),因为这似乎会生成一个尚未修复的旧错误。关于这个问题看看:https://github.com/mojohaus/jaxb2-maven-plugin/issues/48
希望对你有帮助!
关于java - 从 JDK7 传递到 8 时出现 JAXB2 schemagen 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47038411/