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

OCI Java SDK调用ListAvailabilityDomains返回未知错误求助

排查OCI Java SDK调用接口返回Unknown Error的问题

使用OCI Java SDK 3.23.2调用Identity服务的ListAvailabilityDomains、listRegions()、listInstances()等接口时,均返回以下未知错误:

Error returned by ListAvailabilityDomains operation in Identity service.(-1, null, false) Unknown error
时间戳:2023-08-29T11:53:40.327Z
客户端版本:Oracle-JavaSDK/3.23.2
请求端点:https://identity.eu-frankfurt-1.oci.oraclecloud.com/20160918/availabilityDomains?compartmentId=

排查思路与解决方法

1. 校验认证参数正确性

  • 指纹参数错误:代码中fingerprint(accessKeyId)存在明显问题——此处应传入API密钥的指纹(可在OCI控制台用户详情的「API密钥」页面查看),而非Access Key ID。这是最常见的认证失败原因。
  • OCID正确性:确认tenantId(租户OCID)、userId(用户OCID)无拼写错误,可直接从OCI控制台复制对应值。
  • 私钥有效性:
    • 检查私钥文件路径是否正确,应用程序是否有读取该文件的权限(Linux/macOS下建议设置权限为600)。
    • 确认私钥与OCI控制台上传的公钥配对,若私钥设置了密码,需使用带密码的供应商:
      new SimplePrivateKeySupplier(file.getLocation(), "your-private-key-password".toCharArray())
      

2. 修正Region配置

Region.valueOf(location.toUpperCase())要求传入符合OCI Region枚举格式的值(如EU_FRANKFURT_1),而非eu-frankfurt-1这类字符串。若location变量是eu-frankfurt-1,需先将其转换为下划线分隔的大写格式,或直接使用枚举常量:

.region(Region.EU_FRANKFURT_1)

3. 解决依赖冲突

OCI Java SDK已内置适配版本的Jersey相关依赖,手动添加的jersey-server、jersey-media-json-jackson会导致版本冲突,引发HTTP请求处理异常。建议移除这些手动引入的Jersey依赖,仅保留OCI官方依赖:

<!-- OCI SDK核心依赖 -->
<dependency>
    <groupId>com.oracle.oci.sdk</groupId>
    <artifactId>oci-java-sdk-core</artifactId>
    <version>3.23.2</version>
</dependency>
<!-- Identity服务依赖 -->
<dependency>
    <groupId>com.oracle.oci.sdk</groupId>
    <artifactId>oci-java-sdk-identity</artifactId>
    <version>3.23.2</version>
</dependency>
<!-- Jersey HTTP客户端依赖 -->
<dependency>
    <groupId>com.oracle.oci.sdk</groupId>
    <artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
    <version>3.23.2</version>
</dependency>

4. 排查网络连通性

  • 确认应用服务器可访问OCI服务端点https://identity.eu-frankfurt-1.oci.oraclecloud.com,排查防火墙、代理是否阻止了请求。
  • 若使用代理,需为OCI客户端配置代理信息:
    IdentityClient.builder()
        .authenticationDetailsProvider(authProvider)
        .proxyConfiguration(ProxyConfiguration.builder()
            .host("proxy-host")
            .port(8080)
            .build())
        .build();
    

5. 开启调试日志定位问题

开启OCI SDK的DEBUG日志,查看请求签名、HTTP头、响应详情,可快速定位具体错误。以Logback为例,添加日志配置:

<logger name="com.oracle.bmc" level="DEBUG"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:13:14