为了账号安全,请及时绑定邮箱和手机立即绑定

无法从谷歌云存储返回对象名称

无法从谷歌云存储返回对象名称

婷婷同学_ 2022-09-14 10:16:02
我正在以下列格式在谷歌云中存储对象bucketname/UUID/object例如,我在谷歌云中有一个对象,存储为roshanbucket/1fa0e7b4-b551-4e5c-a491-8d86f06a1eef/test.txt这是我用来返回对象名称的方法public String getFileName(String bucketName, String uuid) {    final String[] fileName = {null};    Page<Blob> blobs = storage.list(bucketName, BlobListOption.prefix(uuid));    blobs.iterateAll().forEach(        blob -> fileName[0] = blob.getName()//.substring(blob.getName().lastIndexOf('/') + 1)    );    return fileName[0];  }这是测试方法@Test  public void testGetFileName(){    String fileName = googleCloudStorage.getFileName("roshanbucket", "1fa0e7b4-b551-4e5c-a491-8d86f06a1eef");    System.out.println(fileName);  }当我运行测试时,它给了我以下错误java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)Vat com.google.cloud.storage.StorageImpl.optionMap(StorageImpl.java:1279)at com.google.cloud.storage.StorageImpl.optionMap(StorageImpl.java:1268)at com.google.cloud.storage.StorageImpl.optionMap(StorageImpl.java:1301)at com.google.cloud.storage.StorageImpl.list(StorageImpl.java:306)at services.fileserver.GoogleCloudStorage.getFileName(GoogleCloudStorage.java:76)at services.fileserver.GoogleCloudStorageTest.testDownloadLink(GoogleCloudStorageTest.java:40)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)如何解决此问题?
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

似乎你的罐子的版本谷歌提供是错误的。签出包含前提条件的 jar 文件的版本.class


查看完整回答
反对 回复 2022-09-14
?
米脂

TA贡献1836条经验 获得超3个赞

添加此依赖项解决了问题


<dependency>

 <groupId>com.google.guava</groupId>

 <artifactId>guava</artifactId>

 <version>27.1-jre</version>

</dependency>


查看完整回答
反对 回复 2022-09-14
?
波斯汪

TA贡献1811条经验 获得超4个赞

我建议按照文档中的步骤操作,以获得适用于 Java 的正确客户端库。此处当前指定的 pom.xml 依赖项如下所示


<dependency>

  <groupId>com.google.cloud</groupId>

  <artifactId>google-cloud-storage</artifactId>

  <version>1.66.0</version>

</dependency>


查看完整回答
反对 回复 2022-09-14
  • 3 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信