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

SpringBoot+Maven集成OCI SDK遇NoSuchElementException问题求助

解决OCI SDK连接时的NoSuchElementException(无可用HTTP Provider)问题

排查与解决步骤:

1. 确认依赖实际引入状态

  • 执行mvn dependency:tree命令,检查输出中是否存在oci-java-sdk-common-httpclient-jersey(或你添加的对应HTTP客户端依赖),同时排查是否有其他版本的该依赖被意外排除。
  • 若发现依赖冲突,在pom.xml中显式排除冲突项,示例:
<dependency>
    <groupId>com.oracle.oci.sdk</groupId>
    <artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
    <version>3.10.0</version>
    <exclusions>
        <exclusion>
            <groupId>冲突依赖的groupId</groupId>
            <artifactId>冲突依赖的artifactId</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2. 手动指定HTTP客户端实现

Spring Boot自动配置可能干扰OCI SDK的HTTP Provider自动发现逻辑,可在初始化客户端时显式指定:

import com.oracle.bmc.http.client.jersey.JerseyHttpClientBuilder;
import com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider;
import com.oracle.bmc.objectstorage.ObjectStorageClient;

// 以ObjectStorageClient为例,显式配置Jersey HTTP客户端
InstancePrincipalsAuthenticationDetailsProvider authProvider = InstancePrincipalsAuthenticationDetailsProvider.builder().build();
ObjectStorageClient client = ObjectStorageClient.builder()
        .authenticationDetailsProvider(authProvider)
        .httpClient(JerseyHttpClientBuilder.builder().build())
        .build();

3. 确保核心依赖完整

显式添加oci-java-sdk-common依赖(避免依赖传递异常丢失):

<dependency>
    <groupId>com.oracle.oci.sdk</groupId>
    <artifactId>oci-java-sdk-common</artifactId>
    <version>3.10.0</version>
</dependency>

4. 清理Maven缓存并重建

执行mvn clean install -U命令,强制更新依赖并清理本地缓存,消除旧缓存依赖的影响。

5. 验证JDK版本兼容性

OCI SDK 3.10.0要求JDK 8及以上版本,确认项目使用的JDK版本符合要求,避免版本不兼容导致类加载失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:42:06