解决java.lang.NoClassDefFoundError: jakarta/json/spi/JsonProvider

在SpringBoot 2.3.2.RELEASE与Elasticsearch 7.16.2集成时,由于jakarta.json版本不匹配导致启动异常。错误信息指出找不到jakarta.json.spi.JsonProvider类。解决方法是将jakarta.json的版本升级到2.0.1。对于多模块项目,可以在父模块的pom.xml中设置版本号,并在dependencyManagement中声明相关依赖;对于单模块项目,直接在dependencies中更新相关依赖。完成上述修改后,异常可被消除。

问题复现

SpringBoot 版本:2.3.2.RELEASE
ElasticSearch 版本:7.16.2

<!-- 引入es依赖 -->
<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>7.16.2</version>
</dependency>

启动项目后,出现异常

[co.elastic.clients.elasticsearch.ElasticsearchClient]: Factory method 'elasticsearchClient' threw exception; nested exception is java.lang.NoClassDefFoundError: jakarta/json/spi/JsonProvider

原因

根据pom文件,可以得知springboot使用的是 1.1.6 版本,由于版本问题,导致找不到这个类出现异常
版本号管理
只需要替换成 2.0.1 版本。

解决

多模块

如果是多模块,在父模块设置版本号即可

<!-- 父模块 -->
<properties>
    <jakarta-json.version>2.0.1</jakarta-json.version>
    <elasticsearch.version>7.16.2</elasticsearch.version>
</properties>

<!-- 依赖声明 -->
<dependencyManagement>
	<dependencies>
		<!-- 引入es依赖 -->
		<dependency>
			<groupId>co.elastic.clients</groupId>
			<artifactId>elasticsearch-java</artifactId>
			<version>${elasticsearch.version}</version>
		</dependency>
		<dependency>
			<groupId>jakarta.json</groupId>
			<artifactId>jakarta.json-api</artifactId>
			<version>${jakarta-json.version}</version>
		</dependency>
	</dependencies>
</dependencyManagement>

单模块

<properties>
    <jakarta-json.version>2.0.1</jakarta-json.version>
    <elasticsearch.version>7.16.2</elasticsearch.version>
</properties>

<dependencies>
	<!-- 引入es依赖 -->
	<dependency>
		<groupId>co.elastic.clients</groupId>
		<artifactId>elasticsearch-java</artifactId>
		<version>${elasticsearch.version}</version>
	</dependency>

	<dependency>
		<groupId>jakarta.json</groupId>
		<artifactId>jakarta.json-api</artifactId>
		<version>${jakarta-json.version}</version>
	</dependency>
</dependencies>

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

### 解决在 Ubuntu 22.04 上安装 ONNX Runtime 报错的方法 #### NVCC 命令未找到 当遇到命令 `nvcc` not found 的提示时,这表明 CUDA 工具链尚未正确配置或安装。可以通过以下方法来解决问题: 对于该问题的一个解决方案是通过 APT 安装 NVIDIA CUDA 工具包[^1]。 ```bash sudo apt update sudo apt install nvidia-cuda-toolkit ``` #### 验证 Ubuntu 版本与 CUDA 兼容性 为了确保所使用的操作系统版本能够直接支持特定版本的 CUDA 而无需额外的手动干预,在尝试安装之前应当确认 Ubuntu 22.04 对于目标 CUDA 版本的支持情况[^2]。访问[NVIDIA 开发者网站](https://developer.nvidia.com/cuda-toolkit-archive),查找对应的操作系统和 CUDA 版本组合的信息。 #### 构建脚本失败重试机制 构建过程中可能会由于网络连接不稳定而导致某些资源无法成功获取,特别是从 GitHub 下载文件时可能出现此类状况。面对这种情况可以采取多次尝试的方式继续操作直至顺利完成整个过程[^3]。 #### 更新 CMake 至最新稳定版 考虑到默认通过APT安装得到的CMake可能不是最新的,并且较低版本可能导致兼容性方面的问题,建议卸载现有版本并按照官方指南重新编译安装更高版本的CMake工具。具体步骤如下所示[^4]: 1. **移除旧有版本** ```bash sudo apt-get remove cmake ``` 2. **下载指定版本源码压缩包** ```bash wget https://cmake.org/files/v3.29/cmake-3.29.7.tar.gz ``` 3. **解压文件夹并将工作目录切换至其中** ```bash tar -zxvf cmake-3.29.7.tar.gz cd cmake-3.29.7 ``` 4. **运行引导程序完成环境检测以及生成 Makefile 文件** ```bash ./bootstrap ``` 5. **利用多线程加速编译流程(-j参数后面跟CPU核心数)** ```bash make -j8 ``` 6. **最后一步就是把新编译好的二进制文件复制到系统的标准路径下以便全局调用** ```bash sudo make install ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Remember_Ray

何其有幸,得你青睐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值