使用 Java/Kotlin 更新 Google Cloud Storage 中对象的元数据会出现 NullPointerExceptions

问题描述 投票:0回答:1

我创建了一个函数来更新 Google Cloud Storage 中对象的元数据。

fun updateUserMetadata(objectName: String, userMetadata: Map<String, String>) {
    val blobId = BlobId.of(bucketName, basePath + objectName)
    val blobInfo: BlobInfo = BlobInfo.newBuilder(blobId)
            .setMetadata(userMetadata)
            .build()
    storage.update(blobInfo)
}

不知何故,这个函数总是给我以下异常:

java.lang.NullPointerException
    at com.google.cloud.storage.BlobId.fromPb(BlobId.java:119)
    at com.google.cloud.storage.BlobInfo.fromPb(BlobInfo.java:1029)
    at com.google.cloud.storage.Blob.fromPb(Blob.java:918)
    at com.google.cloud.storage.StorageImpl.update(StorageImpl.java:428)
    at com.google.cloud.storage.StorageImpl.update(StorageImpl.java:447)
    at com.peerke.outdoorpuzzlegame.backend.common.gcp.cloudstorage.CloudStorageBase.updateUserMetadata(CloudStorageBase.kt:88)
    at com.peerke.outdoorpuzzlegame.backend.common.gcp.cloudstorage.CloudStorageBaseTest.testUpdateUserMetadata(CloudStorageBaseTest.kt:71)

在上面的函数中,没有一个变量为空。

这是一个错误还是我做错了什么?

kotlin google-cloud-storage google-api-java-client
1个回答
0
投票

我一直在研究你如何传递东西,我首先没有看到任何直接错误。我的发现完全有道理,我希望能帮助您找到解决方案:

gsObjectName - the object name of this Blob, if it is stored on Google Cloud Storage, null otherwise.

我倾向于认为这是一个关于如何指向 GCS 对象的路径问题。它无法到达您指向的位置可以解释为什么会引发空指针。

我建议修改您指向 GCS 对象路径的方式。

希望这有帮助。

编辑:

我发现了另一件事可以帮助您解决问题。这与您尝试做的事情类似,不同的观点可能会帮助您。

看看这里

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