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

升级Apache IoTDB至Jakarta:如何让JAX-RS-Jersey生成代码仅用Jakarta包?

解决openapi-generator生成Jakarta EE兼容REST Provider的问题

要让生成的代码完全使用Jakarta命名空间,你可以按以下步骤排查和修复:

1. 升级openapi-generator-maven-plugin版本

低版本的openapi-generator对Jakarta EE的支持不完善,建议升级到7.x以上的稳定版(比如7.4.0),这个版本对useJakartaEe参数的处理更彻底,能正确替换Jackson相关类的引用。

修改插件配置:

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>7.4.0</version> <!-- 使用最新稳定版 -->
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec>
                <generatorName>jaxrs-jersey</generatorName>
                <configOptions>
                    <useJakartaEe>true</useJakartaEe>
                    <jaxrsVersion>3.0</jaxrsVersion> <!-- 指定JAX-RS 3.0(对应Jakarta EE 9+) -->
                    <!-- 其他原有配置 -->
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

2. 替换Jackson依赖为Jakarta兼容版本

原来的JacksonJaxbJsonProvider属于javax命名空间的包,需要替换为Jackson官方提供的Jakarta适配版本:

<dependency>
    <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
    <artifactId>jackson-jakarta-rs-json-provider</artifactId>
    <version>2.15.2</version> <!-- 选择与openapi-generator兼容的版本 -->
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
    <artifactId>jackson-jakarta-rs-base</artifactId>
    <version>2.15.2</version>
</dependency>

这个依赖中的JacksonJaxbJsonProvider完全基于Jakarta命名空间,包路径为com.fasterxml.jackson.jakarta.rs.json.JacksonJaxbJsonProvider。

3. 升级Jersey依赖到3.x版本

Jersey 3.x是专门适配Jakarta EE的版本,确保项目中的Jersey核心依赖同步升级:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>3.1.4</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>3.1.4</version>
</dependency>

4. 检查自定义模板(如果有)

如果项目中使用了openapi-generator的自定义模板,需要手动修改Provider模板文件(比如ApiResponseProvider.mustache),将原有的com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider替换为Jakarta版本的类路径。

5. 清理并重新生成代码

执行Maven命令清理缓存并重新生成代码:

mvn clean generate-sources

此时生成的Provider类应该会继承自Jakarta版本的JacksonJaxbJsonProvider,完全脱离javax命名空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:34:50