JaxrsOpenApiContextBuilder不支持Jakarta,求适配Jakarta的Swagger依赖
问题描述
当前项目使用如下Swagger依赖:
<dependency> <groupId>io.swagger.core.v3</groupId> <artifactId>swagger-jaxrs2</artifactId> <version>2.2.22</version> </dependency>
通过以下代码生成Swagger资源:
OpenAPI oas = new OpenAPI(); Info info = new Info(); info.title("Swagger catalog-db-adapter bootstrap code"); info.setVersion("1.0.2"); SwaggerConfiguration oasConfig = new SwaggerConfiguration().openAPI(oas).prettyPrint(true) .resourcePackages(Stream.of("org.onap.so.adapters.catalogdb.rest").collect(Collectors.toSet())); try { new JaxrsOpenApiContextBuilder().application(this).openApiConfiguration(oasConfig).buildContext(true); } catch (OpenApiConfigurationException e) { throw new RuntimeException(e.getMessage(), e); }
执行时报错:JaxrsOpenApiContextBuilder仅支持javax而非Jakarta,询问是否有支持Jakarta的替代依赖。
解决方案
Swagger Core从2.2.0版本开始提供了专门适配Jakarta EE的依赖包,只需替换原有依赖为Jakarta专属版本:
<dependency> <groupId>io.swagger.core.v3</groupId> <artifactId>swagger-jaxrs2-jakarta</artifactId> <version>2.2.22</version> </dependency>
代码层面无需大幅修改,但要确保项目中相关API的导入从javax.ws.rs.*替换为jakarta.ws.rs.*,比如你的Application实现类需导入jakarta.ws.rs.core.Application而非javax版本。JaxrsOpenApiContextBuilder等Swagger相关类在新依赖中会自动适配Jakarta环境,原有初始化代码可直接复用。
内容的提问来源于stack exchange,提问作者Shubham Shekhar
相关产品推荐
相关产品推荐

