我使用gradle-jaxb-plugin从XSD生成类: https://github.com/jacobono/gradle-jaxb-plugin
它可以正常使用外部绑定,我可以使用内置 XJC扩展没有问题。但我没有管理jaxb 扩展插件工作,特别是 - 来自的传播 jaxb2-基础知识。
当我尝试gradle-jaxb-plugin中提出的配置时 文档,我收到以下错误:
:pwa-application:xjc FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':pwa-application:xjc'.
> java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: Provider org.jvnet.jaxb2_commons.plugin.jaxbindex.JaxbIndexPlugin not a subtype
我在这个帖子中找到了解释: com.sun.tools.xjc.Plugin: Provider <plugin> not a subtype 但是那里没有gradle-jaxb-plugin的解决方案,我卡住了。
答案 0 :(得分:5)
好吧,我现在可以自己回答我的问题了。
解决方案就是使用
<head>
文档中提到了,但没有解释。 现在我知道它是为了什么。
答案 1 :(得分:0)
我遇到了同样的错误。
项目使用的是Java 11,但是JAVA_HOME
指向Java 8。
在JAVA_HOME
环境中更改路径后。 Java 11的变量),该问题已解决。
仅供参考-我们正在使用Gradle,并且为Java 11工作的XJC定义如下:
project.ant {
taskdef name: "xjc",
classname: "com.sun.tools.xjc.XJCTask",
classpath: configurations.jaxb.asPath
mkdir(dir: sourcesDir)
mkdir(dir: classesDir)
xjc(destdir: sourcesDir) {
schema(dir: "src/main/resources/xsd", includes: "*.xsd", excludes: "XSD_FILENAME.xsd")
arg(value: "-wsdl")
arg(value: "-extension")
arg(value: "-Xinheritance")
arg(value: "-Xannotate")
produces(dir: sourcesDir, includes: "**/*.java")
binding(dir: "src/main/resources/xsd", includes: "bindings.xjb")
}
}