我得到:-线程“main”java.lang.NoSuchFieldError中的异常:TOO_MANY_REQUESTS

问题描述 投票:0回答:4
AuthenticationDetailsProvider provider = SimpleAuthenticationDetailsProvider.builder()
        .tenantId(oci_tenant_id)
        .userId(oci_user_id)
        .region(Region.AF_JOHANNESBURG_1)
        .fingerprint(oci_finger_print)
        .privateKeySupplier((Supplier) privateKeySupplier)
        .build();

ObjectStorage ociClient = new ObjectStorageClient(provider);

从上面我在创建时得到以下异常:

ObjectStorage ociClient = new ObjectStorageClient(provider);
Exception in thread "main" java.lang_.NoSuchFieldError Create breakpoints: TOO_MANY_REQUESTS
    at com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration.(CircuitBreakerConfiguration.java:44)
    at com.oracle.bmc.util.CircuitBreakerUtils.(CircuitBreakerUtils.java:35)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:317)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:224)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:187)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:152)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:124)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:99)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:76)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:62)
    at com.oracle.bmc.objectstorage.ObjectStorageClient.(ObjectStorageClient.java:51)
    at com.vodacom.oci.services.OCI_GenericUtility.getObjectClient(OCI_GenericUtility.java:137)
    at com.vodacom.oci.services.OCI_GenericUtility.main(OCI_GenericUtility.java:47)
java sdk oracle-cloud-infrastructure
4个回答
0
投票

您能分享一下您项目根目录下

mvn dependency:tree
的输出吗?看起来依赖项
jakarta.ws.rs:jakarta.ws.rs-api
没有指向正确的版本 (
2.1.6
) 或者被
javax.ws.rs:javax.ws.rs-api
覆盖。要解决此问题,您的项目中应仅包含
jakarta.ws.rs:jakarta.ws.rs-api
版本
2.1.6


0
投票

我从 pom.xml 中删除了 aws-java-sdk* 依赖项,并且我的代码有效。看起来 oci-java-sdkaws-java-sdk 依赖项之间存在冲突。以下依赖项已删除,异常消失了

<!-- <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.11.908</version>
    </dependency>-->

<!--<dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-core</artifactId>
        <version>1.11.908</version>
    </dependency>-->

0
投票

我有同样的错误,只需两个 Maven 依赖项即可重现:

    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>3.3.1</version>
    </dependency>

    <dependency>
      <groupId>com.oracle.oci.sdk</groupId>
      <artifactId>oci-hdfs-connector</artifactId>
      <version>3.3.1.0.3.6</version>
    </dependency>

有一个旧的 jar 与 jakarta 冲突,我发现这个有相同的类:

javax.ws.rs:jsr311-api:jar:1.1.1:compile

一旦排除,错误就消失了 排除它的简单方法,添加对其父项 jersey-core 的直接依赖,然后从中排除:

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>1.19</version>
        <exclusions>
            <exclusion>
                <groupId>javax.ws.rs</groupId>
                <artifactId>jsr311-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

0
投票

对于我来说,在一个同时依赖于 AWS 和 Oracle SDK 的项目中,通过添加此依赖项来解决冲突

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.1.1</version>
</dependency>

OCI SDK 依赖于“rs-api”>= 2.1,因为它包含一个常量

Response.Status.TOO_MANY_REQUESTS
,其 Javadoc 文档中有
@since 2.1

© www.soinside.com 2019 - 2024. All rights reserved.