java - 从 GCP 存储桶读取文件的 NoSuchMethod

标签 java google-cloud-platform

我正在尝试使用此代码从 Google Cloud Storage 存储桶读取文件

Blob blob = storage.get(BlobId.of(Constants.GCS_BUCKET, srcFilename));
printBlob(blob.reader());
private void printBlob(ReadChannel reader) {
    try {
        WritableByteChannel outChannel = Channels.newChannel(System.out);
        ByteBuffer bytes = ByteBuffer.allocate(64 * 1024);
        while (reader. read(bytes) > 0) {
            bytes.flip();
            outChannel.write(bytes);
            bytes.clear();
        }
    }
    catch (Exception e) {

    }

}

当执行reader.read(bytes)时,代码会抛出此异常

[INFO] GCLOUD: Caused by: 
[INFO] GCLOUD: java.lang.NoSuchMethodError: com.google.api.services.storage.Storage$Objects$Get.setReturnRawInputStream(Z)Lcom/google/api/client/googleapis/services/AbstractGoogleClientRequest;
[INFO] GCLOUD:  at com.google.cloud.storage.spi.v1.HttpStorageRpc.createReadRequest(HttpStorageRpc.java:658)
[INFO] GCLOUD:  at com.google.cloud.storage.spi.v1.HttpStorageRpc.read(HttpStorageRpc.java:693)
[INFO] GCLOUD:  at com.google.cloud.storage.BlobReadChannel$1.call(BlobReadChannel.java:127)
[INFO] GCLOUD:  at com.google.cloud.storage.BlobReadChannel$1.call(BlobReadChannel.java:124)

最佳答案

已解决。 需要使用依赖

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-core-http</artifactId>
        <version>1.91.0</version>
    </dependency>

如果您使用 1.90.0,它会崩溃。

关于java - 从 GCP 存储桶读取文件的 NoSuchMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58009110/

相关文章:

java - 继承的输入不匹配异常错误

java - 我是否需要防御性复制来构造一个具有*非最终*但不可变字段的不可变类?

java - 使用 XStream 将字符串日期时间转换为 Java Long

google-cloud-platform - 执行 sql 查询 gcloud 命令行

python - 安装python库后无法连接到google cloud datalab

google-cloud-platform - 无法通过浏览器连接到 Google Cloud Shell

java - 多线程快速排序没有给出预期的答案

java - 在 java 中将自然顺序与树集一起使用

python - 数据流中的值错误 : Invalid GCS location: None

google-cloud-platform - 将 Terraform 输出转储到本地文件