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

将jaxws-maven-plugin从Java 7迁移至Java 17遇依赖问题求助

Java 17 下迁移 jaxws-maven-plugin 解决方案

你遇到的问题根源在于旧版插件依赖的 com.sun.xml.ws:jaxws-tools:2.2.8 是非常老旧的版本,完全不兼容 Java 17,而且 Maven 解析其 POM 时会因为父项目依赖缺失或不兼容导致错误。以下是针对 Java 17 的有效迁移方案:

替换为兼容 Java 17 的插件配置

直接使用支持 Java 11+ 的最新版 jaxws-maven-plugin,并显式指定兼容 Java 17 的 jaxws-tools 依赖:

<plugin>
    <groupId>org.jvnet.jax-ws-commons</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>3.0.0</version> <!-- 适配 Java 11+,包括 Java 17 -->
    <executions>
        <execution>
            <id>1</id>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <xadditionalHeaders>true</xadditionalHeaders>
                <wsdlDirectory>src/main/resources/wsdl</wsdlDirectory>
                <target>2.1</target>
                <!-- 解决 Java 17 模块化访问限制 -->
                <vmArgs>
                    <vmArg>--add-modules=java.se</vmArg>
                    <vmArg>--add-opens=java.base/java.lang=ALL-UNNAMED</vmArg>
                    <vmArg>--add-opens=java.base/java.io=ALL-UNNAMED</vmArg>
                    <vmArg>--add-opens=java.base/java.util=ALL-UNNAMED</vmArg>
                </vmArgs>
            </configuration>
        </execution>
    </executions>
    <!-- 强制使用兼容 Java 17 的 jaxws-tools 版本 -->
    <dependencies>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-tools</artifactId>
            <version>4.0.2</version> <!-- 完全支持 Java 17 -->
            <scope>runtime</scope>
        </dependency>
    </dependencies>
</plugin>

关键调整说明

  • 升级插件版本:3.0.0 版本是官方针对 Java 11+ 重构的版本,解决了旧版本在高版本 Java 下的兼容性问题。
  • 移除 executable 配置:新版本会自动使用依赖的 jaxws-tools,无需手动指定路径,避免版本不匹配。
  • 添加模块化参数:Java 17 严格限制了内部 API 的访问,vmArgs 中的参数用于开放 jaxws-tools 所需的内部模块访问权限。
  • 显式指定 jaxws-tools 版本:强制拉取支持 Java 17 的 4.0.2 版本,彻底避免 Maven 解析旧版 2.2.8 时的 POM 错误。

额外必备配置

  1. 升级 Maven 版本:确保使用 Maven 3.8.1 及以上版本,旧版 Maven 对 Java 17 的依赖解析支持不足。
  2. 配置编译插件:将项目编译的 source 和 target 设置为 17:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <source>17</source>
        <target>17</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>
  1. 清理本地仓库:如果之前拉取过旧版依赖,删除 ~/.m2/repository/com/sun/xml/ws 目录,重新执行 mvn clean install 拉取新依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:03:23