如何修复“java.lang.NoClassDefFoundError:com / google / api / client / http / HttpRequestInitializer”运行时错误?

时间:2017-09-14 13:28:33

标签: java eclipse google-app-engine google-cloud-storage

我只是开始学习,如何在Goole App Engine Standard中使用java。 我使用Eclipse 4.6.3。 我创建了Web项目并编写了一些垃圾邮件,然后我决定在Google云端存储中尝试列表文件。 这是我的代码:

public static ArrayList<String> getFilesInBucket(String bucket_name)
{
/*Line 235*/GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());

    ListResult result = null;
    try { result = gcsService.list(bucket_name, ListOptions.DEFAULT); }
    catch (IOException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    ArrayList<String> files = new ArrayList<String>();

    while (result.hasNext())
    {
        ListItem l = result.next();

        if (!l.isDirectory())
            files.add(l.getName());
    }

    return files;
}

这个垃圾在本地运行,但在我部署之后它停止了。我在Google控制台中看到错误:

java.lang.NoClassDefFoundError: com/google/api/client/http/HttpRequestInitializer
at MyJunk.getFilesInBucket (ADServlet.java:235)

添加到src中lib目录的每个jar也会添加到web-inf / lib中。 enter image description here

我还在这里添加了这个罐子: enter image description here

我甚至打开了问题标签并快速修复了每个“Eclipse警告:XXXXXXXXXXX.jar将不会被导出或发布。”垃圾由此: enter image description here

(这不是我的屏幕)。

然而我的代码在运行时在GAE标准版上失败了......我还能做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:1)

Google Cloud库有很多依赖项。而不是试图用手追逐它们,让你的机器为你做。两个建议:

  1. 使用Google Cloud Tools for Eclipse。使用属性&gt;配置&gt;转换为App Engine标准项目,然后属性&gt; Java构建路径&gt;库并选择添加库...&gt; Google API库并选择 Google云端存储
  2. 将您的项目转换为Maven或Gradle,然后转换为add the documented dependencies