java - 使用 Google Cloud Storage 列出导致 NoSuchMethodError、Java AppEngine 的存储桶
问题描述
试图仅列出我的 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>
这个特定示例不需要前一个依赖项,但我需要它用于应用程序的另一部分,我怀疑这可能是问题所在。有什么想法可能会出错吗?
解决方案
发现了问题。我得到了一个 NoSuchMethodError ,因为显然所需的库没有包含在项目中,即使它被指定为 maven 依赖项。开发服务器上的库与生产服务器上的库之间存在某种不匹配。
Eclipse 中的解决方案是删除所有相关的 Google 库,然后通过右键单击项目 > 构建路径 > 配置构建路径... > 添加库... > Google Cloud Platform Libraries > 选择“App Engine API”再次添加它们& “云储存”。
推荐阅读
- mongodb - MongoDB 在禁用压缩器的情况下自动启动
- c++ - 如果在 google mock 上指定了多个 WillRepeatedly 操作会发生什么?
- linux - 无法在 google cloud linux VM 上将 cdo 升级到 v1.9.7
- python - 在数据框中创建新变量或列
- c++ - 实施 Hoare 算法以获得更好的快速排序性能并读取比较和交换的数量
- c# - 为 IdentityServer4 安装 Quickstart UI
- javascript - 为相同的代码调用 componentDidMount 和 componentDidUpdate
- spring - 如何仅在 Spring 中为微服务项目的外部客户端启用身份验证?
- git - 如何克隆工作树?
- spring - 如何在没有配置文件和服务文件的 Spring OAuth2 中生成自定义令牌?