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

添加@Bean创建OpenSearchClient Bean时出现ClassNotFoundException的原因

异常原因分析

这个BeanCreationException的根源ClassNotFoundException: jakarta/json/spi/JsonProvider,核心原因是项目缺失Jakarta JSON Processing API(JSR 374)相关依赖。

当你给OpensearchClient方法添加@Bean注解后,Spring容器会触发该Bean的初始化流程,而OpenSearch Java客户端在初始化时需要依赖Jakarta JSON的SPI提供者(JsonProvider)完成JSON序列化/反序列化操作。如果项目中没有引入对应的依赖包,JVM就无法找到这个类,进而抛出该异常。

额外需要注意版本兼容问题:

  • 若你使用Spring Boot 3.x版本,它默认基于Jakarta EE 9+规范,所有API包前缀从javax改为jakarta,此时必须引入Jakarta版本的JSON依赖,不能再使用旧的javax.json相关包。
  • 如果误用了javax.json的旧依赖,会因包路径不匹配导致类找不到。

解决方向

在项目依赖管理中添加以下依赖:

  • Maven(pom.xml):
<!-- Jakarta JSON API 核心包 -->
<dependency>
    <groupId>jakarta.json</groupId>
    <artifactId>jakarta.json-api</artifactId>
    <version>2.1.2</version>
</dependency>
<!-- JSON 实现包(运行时依赖,API包仅定义规范无实现) -->
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>jakarta.json</artifactId>
    <version>2.1.2</version>
    <scope>runtime</scope>
</dependency>
  • Gradle(build.gradle):
implementation 'jakarta.json:jakarta.json-api:2.1.2'
runtimeOnly 'org.glassfish:jakarta.json:2.1.2'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:55:17