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

JDK8迁移至JDK11时JAX-WS库报错无法实例化WS的问题咨询

问题根本原因

你遇到的报错核心是JAXB依赖版本不兼容:当前pom中jaxb-core使用3.0.2版本、jaxb-impl使用2.3.1版本,3.x版本属于Jakarta EE规范,包名和API结构已经重构,和2.x版本的javax命名空间实现完全不兼容,导致找不到com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getInstance()方法。

修复方案

1. 统一替换JAX-WS/JAXB依赖

删除你当前pom中所有零散添加的JAX-WS、JAXB相关依赖,替换为以下统一版本的依赖组(保持javax命名空间兼容旧代码,适配JDK11):

<!-- JAXB 统一2.3.x版本组 -->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.1</version>
</dependency>

<!-- JAX-WS 统一2.3.1版本组 -->
<dependency>
    <groupId>javax.xml.ws</groupId>
    <artifactId>jaxws-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.3.1</version>
    <exclusions>
        <exclusion>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- SAAJ 依赖保留适配版本 -->
<dependency>
    <groupId>com.sun.xml.messaging.saaj</groupId>
    <artifactId>saaj-impl</artifactId>
    <version>1.5.1</version>
</dependency>

同时删除pom中原有以下冲突依赖:

  • 版本为3.0.2的jaxb-core
  • 版本为2.2.10的com.sun.xml.ws:rt
  • 多余的javax.jws:jsr181-api

2. 重新生成WSDL对应Java类

你之前手动复制的生成类可能存在JDK版本适配问题,调整插件配置后自动生成即可:

  1. 删除项目中手动复制的com.ca.unicenterserviceplus.servicedesk包下所有类
  2. 更新jaxws-maven-plugin配置,添加版本适配:
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <wsdlUrl>http://defect.management.system/ServiceDefinition?wsdl</wsdlUrl>
                <packageName>com.ca.unicenterserviceplus.servicedesk</packageName>
                <sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir>
                <target>2.2</target>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-tools</artifactId>
            <version>2.3.1</version>
        </dependency>
    </dependencies>
</plugin>
  1. 插件会自动将生成的代码加入编译路径,不需要手动复制,避免版本不同步问题。

3. 清理缓存重新构建

执行以下命令强制更新依赖、重新构建:

mvn clean install -U

如果仍然存在依赖冲突,可以执行mvn dependency:tree检查其他第三方包是否间接引入了不同版本的JAXB/JAX-WS依赖,排除对应冲突包即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:48:01