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

升级Java17+Spring6.1.8后使用CXF WSDLToJava遇jaxws前端类路径错误

解决CXF WSDLToJava找不到jaxws frontend的问题

针对你升级到Java17+Spring6.1.8后遇到的错误,可按以下步骤排查解决:

1. 统一CXF版本,避免依赖冲突

确保所有CXF相关依赖(包括插件和runtime依赖)使用完全相同的版本,比如你用的4.0.2。混合不同版本的CXF jar包会导致类路径冲突,是这类错误的常见原因。

2. 正确配置cxf-codegen-plugin(推荐方案)

相比exec-maven-plugin,cxf-codegen-plugin是官方推荐的代码生成工具,配置更简洁且不易出错。以下是完整的兼容Java17的配置示例:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>4.0.2</version>
    <executions>
        <execution>
            <id>generate-cxf-sources</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
            <configuration>
                <wsdlOptions>
                    <wsdlOption>
                        <!-- 替换为你的WSDL文件路径 -->
                        <wsdl>${project.basedir}/src/main/resources/your-service.wsdl</wsdl>
                        <frontend>jaxws</frontend>
                        <!-- 输出目录可自定义 -->
                        <outputDir>${project.build.directory}/generated-sources/cxf</outputDir>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-rt-frontend-jaxws</artifactId>
                    <version>4.0.2</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-rt-databinding-jaxb</artifactId>
                    <version>4.0.2</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-rt-transports-http</artifactId>
                    <version>4.0.2</version>
                </dependency>
            </dependencies>
        </execution>
    </executions>
</plugin>

3. 若坚持使用exec-maven-plugin,需补充完整依赖

exec-maven-plugin需要显式引入所有CXF工具类依赖,尤其是cxf-tools-wsdlto-jaxws,示例配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>generate-wsdl-client</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>java</goal>
            </goals>
            <configuration>
                <mainClass>org.apache.cxf.tools.wsdlto.WSDLToJava</mainClass>
                <arguments>
                    <argument>-frontend</argument>
                    <argument>jaxws</argument>
                    <argument>-wsdl</argument>
                    <argument>${project.basedir}/src/main/resources/your-service.wsdl</argument>
                    <argument>-d</argument>
                    <argument>${project.build.directory}/generated-sources/cxf</argument>
                </arguments>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-tools-wsdlto-jaxws</artifactId>
                    <version>4.0.2</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-rt-frontend-jaxws</artifactId>
                    <version>4.0.2</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-rt-databinding-jaxb</artifactId>
                    <version>4.0.2</version>
                </dependency>
            </dependencies>
        </execution>
    </executions>
</plugin>

4. 补充Java17缺失的JAXB依赖

Java17移除了JAXB的内置支持,需手动添加以下依赖到pom.xml:

<dependencies>
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>4.0.5</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>4.0.5</version>
    </dependency>
</dependencies>

5. 排查依赖冲突

执行mvn dependency:tree命令,检查是否有旧版本的CXF、JAX-WS或JAXB依赖被引入。若发现冲突,使用<exclusions>标签排除旧版本依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:47:29