You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行wsimport任务报错:找不到com.sun.tool.ws.ant.WsImport类

问题:执行wsimport任务时找不到com.sun.tool.ws.ant.WsImport类

我用Spring Initializr创建了新项目,按照官方教程操作时,执行wsimport任务报错,提示找不到com.sun.tool.ws.ant.WsImport类。我的build.gradle配置和教程基本一致,仅添加了部分项目额外依赖,以下是配置文件和错误日志:

build.gradle 配置

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

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.5'
    id 'io.spring.dependency-management' version '1.1.4'
}

group = 'br.com.acessetecnologia.msimportacaocdapb'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}
ext.jaxwsSourceDir = "${buildDir}/generated/sources/jaxws"

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    jaxws
}

repositories {
    mavenCentral()
}

task wsimport {
    description = 'Generate classes from wsdl using wsimport'

    doLast {
        project.mkdir(jaxwsSourceDir)
        ant {
            taskdef(
                name: 'wsimport',
                classname: 'com.sun.tool.ws.ant.WsImport',
                classpath: configurations.jaxws.asPath
            )
            wsimport(
                keep: true,
                destdir: jaxwsSourceDir,
                extension: "true",
                verbose: true,
                wsdl: "${projectDir}/src/main/resources/pge.wsdl",
                xnocompile: true,
                package: "br.com.acessetecnologia.msimportacaocdapb"
            ) {
                xjcarg(value: "-XautoNameResolution")
            }
        }
    }
}
sourceSets {
    main {
        java.srcDirs += jaxwsSourceDir
    }
}
compileJava {
    dependsOn wsimport
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-rest'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-web-services'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    jaxws 'com.sun.xml.ws:jaxws-tools:3.0.0',
        'jakarta.xml.ws:jakarta.xml.ws-api:3.0.0',
        'jakarta.xml.bind:jakarta.xml.bind-api:3.0.0',
        'jakarta.activation:jakarta.activation-api:2.0.0',
        'com.sun.xml.ws:jaxws-rt:3.0.0'
}

tasks.named('test') {
    useJUnitPlatform()
}

错误日志

Execution failed for task ':wsimport'.
taskdef class com.sun.tool.ws.ant.WsImport cannot be found
   using the classloader AntClassLoader[/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.ws/jaxws-tools/3.0.0/f6e72133e8eb7288b5b72745cfad491566defb8f/jaxws-tools-3.0.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.ws/jaxws-rt/3.0.0/d7daedbff650b8a158768c199293e9ec444682fb/jaxws-rt-3.0.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/jakarta.xml.ws/jakarta.xml.ws-api/3.0.0/ad24b3e5b9eaae5a2fa4af3e343e7c89588e8c3/jakarta.xml.ws-api-3.0.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-jxc/4.0.5/4da2bacf4ecbfd3504caf410d605236bd0a2a52c/jaxb-jxc-4.0.5.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-xjc/4.0.5/596cc40d3074baee5ab345c1e34a8f46c2a890cf/jaxb-xjc-4.0.5.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-impl/4.0.5/b70ad3db43ee72d7a35ae3c4d1d6d2e08ce7623/jaxb-impl-4.0.5.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-core/4.0.5/ad427d8777ae2495bfcb37069d611e8379867e6d/jaxb-core-4.0.5.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/jakarta.xml.bind/jakarta.xml.bind-api/3.0.0/9275db6e21287df61690989254a0b46d8d31e99a/jakarta.xml.bind-api-3.0.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.messaging.saaj/saaj-impl/3.0.3/767c56b728ab653247e7f6d5f7f0e6d827ff11ee/saaj-impl-3.0.3.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/jakarta.xml.soap/jakarta.xml.soap-api/3.0.1/f96df5961c8bb8260daddec1b07ee5757939a3a2/jakarta.xml.soap-api-3.0.1.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.stream.buffer/streambuffer/2.0.1/ed2cd5233d9a56c6c1ab7d432132dffd7bc23998/streambuffer-2.0.1.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/org.jvnet.staxex/stax-ex/2.1.0/33160568d70c01da407f8ba982bacf283d00ad4a/stax-ex-2.1.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/org.eclipse.angus/angus-activation/2.0.2/41f1e0ddd157c856926ed149ab837d110955a9fc/angus-activation-2.0.2.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/jakarta.activation/jakarta.activation-api-2.0.0/3432971015ceb6c2ef46489bdb5d3d7e24d20d75/jakarta.activation-api-2.0.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.mail/jakarta.mail/2.0.0/409efff67e50a231b965c2247f7c92ab70d43044/jakarta.mail-2.0.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.activation/jakarta.activation/2.0.0/f4e7519148dee347c7666f336210deedb8aca09d/jakarta.activation-2.0.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/jakarta.jws/jakarta.jws-api-3.0.0/af8955221689acfde96fbd4b2c1c270589bc6903/jakarta.jws-api-3.0.0.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/jakarta.annotation/jakarta.annotation-api-2.1.1/48b9bda22b091b1f48b13af03fe36db3be6e1ae3/jakarta.annotation-api-2.1.1.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/org.glassfish.ha/ha-api-3.1.12/59fbeca6cc196da8159e4957eabe49f23d1e691a/ha-api-3.1.12.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/org.glassfish.gmbal/gmbal-api-only/4.0.2/c830b509991c95141867f0e02621e92fdc785f0d/gmbal-api-only-4.0.2.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/org.glassfish.external/management-api/3.2.3/27374b34efeec7949b25729bf9eab89a221f375c/management-api-3.2.3.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/org.jvnet.mimepull/mimepull/1.9.13/a4f12d0da986cae55dd5c4a735b4fefc700eb266/mimepull-1.9.13.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.sun.xml.fastinfoset/FastInfoset/2.1.1/650c84348bbcf4461bd24d38e67f7a7ce687de24/FastInfoset-2.1.1.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/com.fasterxml.woodstox/woodstox-core/6.2.1/1600925b1ec7c7a3403c8f068ad62feead13132f/woodstox-core-6.2.1.jar:/home/thalys-gadelha/.gradle/caches/modules-2/files-2.1/org.codehaus.woodstox/stax2-api/4.2.1/a3f7325c52240418c2ba257b103c3c550e140c83/stax2-api-4.2.1.jar]

解决办法

原因

JAX-WS 3.0(适配Jakarta EE 9+)版本中,WsImport的Ant任务类路径和类名发生了变更,原com.sun.tool.ws.ant.WsImport类已不存在,且当前配置缺少专门的Ant任务依赖。

修复步骤

  1. 修改Ant任务类名
    将taskdef中的classname改为com.sun.xml.ws.ant.WsImport:

    taskdef(
        name: 'wsimport',
        classname: 'com.sun.xml.ws.ant.WsImport',
        classpath: configurations.jaxws.asPath
    )
    
  2. 添加Ant任务依赖
    在jaxws依赖块中加入专门的Ant任务包:

    jaxws 'com.sun.xml.ws:jaxws-ant:3.0.0',
        'com.sun.xml.ws:jaxws-tools:3.0.0',
        'jakarta.xml.ws:jakarta.xml.ws-api:3.0.0',
        'jakarta.xml.bind:jakarta.xml.bind-api:3.0.0',
        'jakarta.activation:jakarta.activation-api:2.0.0',
        'com.sun.xml.ws:jaxws-rt:3.0.0'
    
  3. 移除重复依赖
    删除buildscript中的jaxws-tools依赖,避免类加载冲突:

    // 删掉这段代码
    buildscript {
        dependencies {
            classpath 'com.sun.xml.ws:jaxws-tools:3.0.0'
        }
     }
    
  4. 清理缓存重新构建
    执行命令清理缓存并重新构建:

    ./gradlew clean build --refresh-dependencies
    

内容的提问来源于stack exchange,提问作者Thalys Menezes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:12:01