Spring Boot 3.0+Java17上传Oracle对象存储所需Maven依赖及报错解决
解决OCI Java SDK在Spring Boot 3.0 + Java 17下的HTTP Provider缺失问题
问题原因
Spring Boot 3.0全面切换到Jakarta EE API,取代了Spring Boot 2.x使用的Java EE。而OCI Java SDK 3.x版本开始,oci-java-sdk-objectstorage不再默认包含HTTP客户端实现依赖,尤其在Jakarta环境下必须显式添加兼容的HTTP客户端模块,这就是你遇到NoSuchElementException的核心原因。之前Spring Boot 2.x + Java 11的环境中,旧版SDK可能默认引入了适配Java EE的HTTP依赖,所以没出问题。
解决方案
在Maven的<dependencies>块中添加Jakarta兼容的HTTP客户端依赖即可,推荐用Jersey的适配版本:
<dependencies> <dependency> <groupId>com.oracle.oci.sdk</groupId> <artifactId>oci-java-sdk-objectstorage</artifactId> </dependency> <!-- 显式添加Jakarta版本的HTTP客户端依赖 --> <dependency> <groupId>com.oracle.oci.sdk</groupId> <artifactId>oci-java-sdk-common-httpclient-jersey</artifactId> </dependency> </dependencies>
如果偏好其他HTTP客户端实现,也可以选择以下任一模块:
oci-java-sdk-common-httpclient-apache(基于Apache HttpClient)oci-java-sdk-common-httpclient-resteasy(基于Resteasy)
验证说明
添加依赖后重新构建项目,OCI SDK就能自动识别并使用对应的HTTP Provider,NoSuchElementException异常会被解决。
内容的提问来源于stack exchange,提问作者Rashid
相关产品推荐
相关产品推荐

