簡體   English   中英

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

[英]Could not find method jaxws() for arguments [com.sun.xml.ws:jaxws-tools:2.1.4]

我正在嘗試使用以下代碼生成Java類,但由於某些gradle插件問題而失敗。

我搜索了它,發現有許多插件可用於生成從xsd分類的java,但只有少數plugins用於生成代碼形式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. 

引用此代碼; https://gist.github.com/ae6rt/8883335

configurations {
    jaxws
}

buildscript {
    dependencies {
        jaxws 'com.sun.xml.ws:jaxws-tools:2.1.4'
    }
}

配置jaxws不適用於構建腳本依賴項。 首先,它被放置在buildscript配置之外,因此不可見。 其次,構建腳本依賴項僅允許classpath配置( 構建腳本的外部依賴項 )。 從構建腳本依賴項中刪除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用FileCollection classesDirs替換了File classesDir ,根據您的評論,您現在收到錯誤

沒有方法簽名:org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.mkdirs()適用於參數類型:()值:[]可能的解決方案:min(),tails(),first(),inits (),減號(org.gradle.api.file.FileCollection),減號(java.util.Comparator)

在線

sourceSets.main.output.classesDirs.mkdirs()

如果您只有1個類的輸出目錄,則可以使用一種解決方法

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

(來自: FileCollection.getSingleFile()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM