4

我使用 gradle-jaxb-plugin 从 XSD 生成类: https ://github.com/jacobono/gradle-jaxb-plugin

它适用于外部绑定,我可以毫无问题地使用内置的 XJC 扩展。但是我没有管理 jaxb 扩展插件工作,特别是来自 jaxb2-basics 的 -Xinheritance。

当我尝试 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 but there is no solution for gradle-jaxb-plugin, 我卡住了。

4

2 回答 2

7

好吧,我现在可以自己回答我的问题了。

解决方案就是使用

taskClassname      = "org.jvnet.jaxb2_commons.xjc.XJC2Task"

它在文档中提到,但没有解释。现在我知道它是干什么用的了。

于 2015-07-01T14:39:50.807 回答
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")
    }
}
于 2020-11-20T09:25:44.797 回答