【问题标题】:Gradle JAXB WSDL task fails with java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContextGradle JAXB WSDL 任务失败并出现 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
【发布时间】:2018-10-23 12:42:00
【问题描述】:

尽管已将jaxb-api 定义为依赖项JAXBContext,但在执行任务genJaxb 时将找不到。添加jaxb-corejaxb-impl 没有任何效果。

错误信息:

FAILURE:构建失败并出现异常。 * 在哪里: 构建文件'/Users/user/IdeaProjects/idx/fmd/build.gradle' 行:19 * 什么地方出了错: 任务 ':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

【问题讨论】:

    标签: gradle jaxb wsdl


    【解决方案1】:

    有了这个依赖列表,构建终于成功了:

    
    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"
    }
    

    【讨论】:

    • 嗨安德拉斯,你是我的超级英雄。这解决了我没有生成 java 类的问题。非常感谢。
    猜你喜欢
    • 2020-01-11
    • 2023-04-09
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多