Задача Gradle JAXB WSDL завершается неудачно с java.lang.NoClassDefFoundError: javax / xml / bind / JAXBContext - PullRequest
0 голосов
/ 23 октября 2018

Несмотря на то, что определено jaxb-api как зависимость, JAXBContext не будет найдено при выполнении задачи genJaxb.Добавление jaxb-core и jaxb-impl не имело никакого эффекта.

Сообщение об ошибке:

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/user/IdeaProjects/idx/fmd/build.gradle' line: 19

* What went wrong:
Execution failed for task ':fmd:genJaxb'.
> java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext

build.gradle:


configurations {
    jaxb
}

task genJaxb {
    ext.sourcesDir = "${buildDir}/generated-sources/jaxb"
    ext.classesDir = "${buildDir}/classes/jaxb"
    ext.schema = "x.wsdl"

    outputs.dir classesDir

    doLast() {
        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: schema,
                    package: "hello.wsdl") {
                arg(value: "-wsdl")
                produces(dir: sourcesDir, includes: "**/*.java")
            }

            javac(destdir: classesDir, source: 1.10, target: 1.10, debug: true,
                    debugLevel: "lines,vars,source",
                    classpath: configurations.jaxb.asPath) {
                src(path: sourcesDir)
                include(name: "**/*.java")
                include(name: "*.java")
            }

            copy(todir: classesDir) {
                fileset(dir: sourcesDir, erroronmissingdir: false) {
                    exclude(name: "**/*.java")
                }
            }
        }
    }
}

dependencies {
    compile "javax.xml.bind:jaxb-api:2.3.1"
    compile(files(genJaxb.classesDir).builtBy(genJaxb))

    jaxb "com.sun.xml.bind:jaxb-xjc:2.3.1"
}

Среда:

  • Java 10.0.2
  • Gradle 4.10.2

1 Ответ

0 голосов
/ 23 октября 2018

С этим списком зависимостей сборка окончательно успешна:


dependencies {
    compile(files(genJaxb.classesDir).builtBy(genJaxb))

    jaxb "com.sun.xml.bind:jaxb-xjc:2.3.1"
    jaxb "com.sun.xml.bind:jaxb-impl:2.3.1"
    jaxb "javax.xml.bind:jaxb-api:2.3.1"
    jaxb "org.glassfish.jaxb:jaxb-core:2.3.0.1"
}
...