【发布时间】:2019-03-21 02:48:42
【问题描述】:
试图仅列出我的 Google Cloud Storage 项目中的存储桶,但不太明白为什么我不断收到以下错误:
java.lang.NoSuchMethodError: com.google.api.services.storage.model.Bucket.getIamConfiguration()Lcom/google/api/services/storage/model/Bucket$IamConfiguration;
我正在使用以下 servlet 对其进行测试:
package servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
@WebServlet("/Test")
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
public Test() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Storage storage = StorageOptions.getDefaultInstance().getService();
for (Bucket bucket : storage.list().iterateAll()) { //this line is giving the error
response.getWriter().write(bucket.getName());
}
}
}
在我的 pom 中我有:
<dependency>
<groupId>com.google.appengine.tools</groupId>
<artifactId>appengine-gcs-client</artifactId>
<version>0.8</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
<version>1.64.0</version>
</dependency>
这个特定示例不需要前一个依赖项,但我需要它用于应用程序的另一部分,我怀疑这可能是问题所在。有什么想法可能会出错吗?
【问题讨论】:
-
我在一个简单的例子中尝试了你的代码,一切都很好。您是否可以自己尝试一下,看看是否遇到相同的错误?这将指向丢失某些访问云存储的权限的方向。您能否进一步详细说明此代码在何处运行以及是否由具有适当权限的用户或服务帐户运行?