Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找不到参数[com.sun.xml.ws:jaxws-tools:2.1.4]的方法jaxws()_Java_Gradle_Jaxb_Gradle Plugin_Wsimport - Fatal编程技术网

Java 找不到参数[com.sun.xml.ws:jaxws-tools:2.1.4]的方法jaxws()

Java 找不到参数[com.sun.xml.ws:jaxws-tools:2.1.4]的方法jaxws(),java,gradle,jaxb,gradle-plugin,wsimport,Java,Gradle,Jaxb,Gradle Plugin,Wsimport,我试图使用以下代码生成java类,但由于一些gradle插件问题,它失败了 我搜索了它,发现有许多插件可用于生成从xsd分类的java,但只有少数插件可用于生成代码表单wsdl。 jaxb是我想使用的其中一种 这是我的build.gradle文件: configurations { jaxws } buildscript { ext { springBootVersion = "2.1.4.RELEASE" } repositories {

我试图使用以下代码生成java类,但由于一些
gradle
插件问题,它失败了

我搜索了它,发现有许多插件可用于生成从
xsd
分类的java,但只有少数
插件可用于生成代码表单
wsdl
jaxb
是我想使用的其中一种

这是我的build.gradle文件:

configurations {
    jaxws
}
buildscript {
    ext {
        springBootVersion = "2.1.4.RELEASE"
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion"
        jaxws 'com.sun.xml.ws:jaxws-tools:2.1.4'
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

repositories {
    mavenCentral()
} 

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-actuator'
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile 'org.springframework.boot:spring-boot-starter-web-services'     
    compile 'org.apache.httpcomponents:httpclient'
    compile 'com.sun.xml.ws:jaxws-tools:2.1.4'
} 

task wsimport {
    ext.destDir = file("${projectDir}/src/main/generated")
    doLast {
        ant {
            sourceSets.main.output.classesDir.mkdirs()
            destDir.mkdirs()
            taskdef(name: 'wsimport',
                    classname: 'com.sun.tools.ws.ant.WsImport',
                    classpath: configurations.jaxws.asPath
            )
            wsimport(keep: true,
                    destdir: sourceSets.main.output.classesDir,
                    sourcedestdir: destDir,
                    extension: "true",
                    verbose: "false",
                    quiet: "false",
                    package: "com.abc.test",
                    xnocompile: "true",
                    wsdl: '${projectDir}/src/main/resources/wsdls/wsdl_1.0.0.wsdl') {
                xjcarg(value: "-XautoNameResolution")
            }
        }
    }
}

compileJava {
    dependsOn wsimport
    source wsimport.destDir
}
bootJar {
    baseName = 'API'
    version = '1.0'

}
下面是我在尝试使用命令行构建项目时遇到的错误

C:\DEV\workspace\API>gradlew clean build --stacktrace

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\DEV\workspace\API\build.gradle' line: 14

* What went wrong:
A problem occurred evaluating root project 'API'.
> Could not find method jaxws() for arguments [com.sun.xml.ws:jaxws-tools:2.1.4] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. 
参考本规范;

配置
jaxws
不适用于构建脚本依赖项。首先,它位于
buildscript
配置之外,因此不可见。其次,构建脚本依赖关系只允许
类路径
配置()。从构建脚本依赖项修复问题中删除
jaxws'com.sun.xml.ws:jaxws-tools:2.1.4'

找不到参数[…]的方法jaxws()

下一个问题是将jax-ws依赖项定义为

compile 'com.sun.xml.ws:jaxws-tools:2.1.4'
并尝试将其引用为

taskdef(name: 'wsimport',
        classname: 'com.sun.tools.ws.ant.WsImport',
        classpath: configurations.jaxws.asPath)
                                  ^^^^^
到目前为止,
jaxws
配置没有定义依赖项,因此路径为空。将相关依赖项更改为

jaxws 'com.sun.xml.ws:jaxws-tools:2.1.4'
可能会为您解决此问题


更新

由于Gradle将
文件类目录
替换为
文件集合类目录
,根据您的评论,您现在收到了错误消息

没有方法签名:org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.mkdirs()适用于参数类型:()值:[]可能的解决方案:min()、tails()、first()、inits()、减号(org.gradle.api.file.FileCollection)、min(java.util.Comparator)

在线

sourceSets.main.output.classesDirs.mkdirs()
如果您只有1个类output dir,那么可以使用

sourceSets.main.output.classesDirs.singleFile.mkdirs()
(发件人:)

配置
jaxws
不适用于构建脚本依赖项。首先,它位于
buildscript
配置之外,因此不可见。其次,构建脚本依赖关系只允许
类路径
配置()。从构建脚本依赖项修复问题中删除
jaxws'com.sun.xml.ws:jaxws-tools:2.1.4'

找不到参数[…]的方法jaxws()

下一个问题是将jax-ws依赖项定义为

compile 'com.sun.xml.ws:jaxws-tools:2.1.4'
并尝试将其引用为

taskdef(name: 'wsimport',
        classname: 'com.sun.tools.ws.ant.WsImport',
        classpath: configurations.jaxws.asPath)
                                  ^^^^^
到目前为止,
jaxws
配置没有定义依赖项,因此路径为空。将相关依赖项更改为

jaxws 'com.sun.xml.ws:jaxws-tools:2.1.4'
可能会为您解决此问题


更新

由于Gradle将
文件类目录
替换为
文件集合类目录
,根据您的评论,您现在收到了错误消息

没有方法签名:org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.mkdirs()适用于参数类型:()值:[]可能的解决方案:min()、tails()、first()、inits()、减号(org.gradle.api.file.FileCollection)、min(java.util.Comparator)

在线

sourceSets.main.output.classesDirs.mkdirs()
如果您只有1个类output dir,那么可以使用

sourceSets.main.output.classesDirs.singleFile.mkdirs()

(发件人:)

谢谢,如上所述更新了构建文件。开始出现新错误。这似乎是因为我可能使用了一些在Gradle5中不适用的语法。错误:*出错原因:任务的执行失败:wsimport'>没有方法签名:org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.mkdirs()适用于参数类型:()值:[]可能的解决方案:min()、tails()、first()、inits()、minus(org.gradle.api.file.FileCollection)、min(java.util.Comparator)这是错误行:sourceset.main.output.classesDirs.mkdirs()谢谢,如上所述更新了构建文件。开始出现新错误。这似乎是因为我可能使用了一些在Gradle5中不适用的语法。错误:*出错原因:任务的执行失败:wsimport'>没有方法签名:org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.mkdirs()适用于参数类型:()值:[]可能的解决方案:min()、tails()、first()、inits()、minus(org.gradle.api.file.FileCollection)、min(java.util.Comparator)这是错误行:sourceset.main.output.classesDirs.mkdirs()