gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:43:02 27 4
gpt4 key购买 nike

我尝试使用以下代码生成 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.

引用这段代码; https://gist.github.com/ae6rt/8883335

最佳答案

configurations {
jaxws
}

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

配置jaxws不适用于构建脚本依赖项。首先,它被放置在 buildscript 配置之外,因此不可见。其次,构建脚本依赖项仅允许 classpath 配置 ( External dependencies for the build script )。从构建脚本依赖项中删除 jaxws 'com.sun.xml.ws:jaxws-tools:2.1.4' 修复了问题

Could not find method jaxws() for arguments [...]

下一个问题是您将 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 将 FileclassesDir 替换为 FileCollectionclassDirs 以来,根据您的评论,您现在收到错误

No signature of method: org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.mkdirs() is applicable for argument types: () values: [] Possible solutions: min(), tails(), first(), inits(), minus(org.gradle.api.file.FileCollection), min(java.util.Comparator)

上线

sourceSets.main.output.classesDirs.mkdirs()

如果您只有 1 个类输出目录,解决方法是使用

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

(来自:FileCollection.getSingleFile())

关于java - 找不到参数的方法 jaxws() [com.sun.xml.ws :jaxws-tools:2. 1.4],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56904643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com