【问题标题】:NoClassDefFoundError: com/google/api/client/extensions/appengine/http/UrlFetchTransport?NoClassDefFoundError:com/google/api/client/extensions/appengine/http/UrlFetchTransport?
【发布时间】:2014-09-17 20:53:59
【问题描述】:

我在谷歌应用引擎上有一个网络服务,我正在尝试从网络服务中读取来自谷歌云存储的文件。这是我正在使用的代码:

public static byte[] readFile2(String bucket, String filepath) throws IOException {
    GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
    GcsFilename fileName = new GcsFilename(bucket, filepath);
    logger.warning(fileName.toString() + "<br>");
    logger.warning(String.format("/gs/%s/%s", fileName.getBucketName(), fileName.getObjectName()));
    int fileSize = (int) gcsService.getMetadata(fileName).getLength();
    ByteBuffer result = ByteBuffer.allocate(fileSize);
    try (GcsInputChannel readChannel = gcsService.openReadChannel(fileName, 0)) {
        readChannel.read(result);
    }
    return result.array();
}

我正在调用它

writer.write(new String(readFile2("myBucket", "my/path/to/file.sql")));

但是,当我尝试运行该服务时,我得到了

java.lang.NoClassDefFoundError: com/google/api/client/extensions/appengine/http/UrlFetchTransport
at com.google.appengine.tools.cloudstorage.oauth.OauthRawGcsServiceFactory.<clinit>(OauthRawGcsServiceFactory.java:29)
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createRawGcsService(GcsServiceFactory.java:42)
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:34)
at ...........................CloudLookupServlet.readFile2(CloudLookupServlet.java:69) -> first line of readFile2
...

我的战争中有以下罐子:

appengine-api-labs.jar
appengine-api-stubs.jar
appengine-api.jar
appengine-gcs-client-0.3.9.jar
appengine-local-runtime-shared.jar
commons-lang3-3.2.jar
commons-logging-1.1.1.jar
el-api.jar
geronimo-jpa_3.0_spec-1.1.1.jar
geronimo-jta_1.1_spec-1.1.1.jar
google-api-client-1.18.0-rc.jar
google-api-client-appengine-1.18.0-rc.jar
google-api-client-servlet-1.18.0-rc.jar
google-api-services-datastore-protobuf-v1beta2-rev1-2.1.0.jar
google-http-client-1.18.0-rc.jar
google-http-client-appengine-1.18.0-rc.jar
google-http-client-jackson-1.18.0-rc.jar
google-http-client-jackson2-1.18.0-rc.jar
google-http-client-protobuf-1.18.0-rc.jar
google-oauth-client-1.18.0-rc.jar
google-oauth-client-appengine-1.18.0-rc.jar
google-oauth-client-java6-1.18.0-rc.jar
google-oauth-client-jetty-1.18.0-rc.jar
google-oauth-client-servlet-1.18.0-rc.jar
gson-2.1.jar
guava-17.0.jar
httpclient-4.0.1.jar
httpcore-4.0.1.jar
jackson-core-2.1.3.jar
jackson-core-asl-1.9.11.jar
jcommander-1.32.jar
jdo2-api-2.3-eb.jar
jsp-api.jar
jsr305-2.0.1.jar
protobuf-java-2.5.0.jar
servlet-api.jar
transaction-api-1.1.jar
xpp3-1.1.4c.jar
xstream-1.4.7.jar

我不确定我缺少什么来解决此问题。任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 大多数情况下,当您在类路径中有版本不匹配的 jar 时会发生此问题。确保类路径中的所有 jar 都是兼容的。
  • 是的,我一直在使用code.google.com/p/google-api-java-client/wiki/… 作为参考,并且我拥有一切。唯一的区别是网站说要使用 jsr305-1.3.9.jar 和 protobuf-java-2.4.1.jar

标签: java google-app-engine servlets noclassdeffounderror google-cloud-storage


【解决方案1】:

好吧,过了一段时间,我找到了我需要的所有罐子。截至此时,https://code.google.com/p/google-api-java-client/wiki/Setup#Download_Library_with_Dependencies 并未更新为运行上述代码所需的完整 jar 列表。我有以下 jar 可以让它与我的项目一起工作(注意:您可能不需要所有这些,但如果您遇到困难,这是一个起点):

appengine-api-labs.jar
appengine-api-stubs.jar
appengine-api.jar
appengine-gcs-client-0.3.9.jar
appengine-local-runtime-shared.jar
commons-lang3-3.2.jar
commons-logging-1.1.1.jar
el-api.jar  
geronimo-jpa_3.0_spec-1.1.1.jar 
geronimo-jta_1.1_spec-1.1.1.jar 
google-api-client-1.18.0-rc.jar 
google-api-client-appengine-1.18.0-rc.jar
google-api-client-servlet-1.18.0-rc.jar 
google-api-services-datastore-protobuf-v1beta2-rev1-2.1.0.jar
google-api-services-storage-v1-rev2-1.18.0-rc.jar
google-http-client-1.18.0-rc.jar
google-http-client-appengine-1.18.0-rc.jar
google-http-client-jackson-1.18.0-rc.jar
google-http-client-jackson2-1.18.0-rc.jar
google-http-client-protobuf-1.18.0-rc.jar
google-oauth-client-1.18.0-rc.jar
google-oauth-client-appengine-1.18.0-rc.jar
google-oauth-client-java6-1.18.0-rc.jar
google-oauth-client-jetty-1.18.0-rc.jar
google-oauth-client-servlet-1.18.0-rc.jar
gson-2.1.jar
guava-17.0.jar
httpclient-4.0.1.jar
httpcore-4.0.1.jar
jackson-core-2.1.3.jar
jackson-core-asl-1.9.11.jar
jcommander-1.32.jar
jdo2-api-2.3-eb.jar
joda-time-2.3.jar
jsp-api.jar
jsr305-2.0.1.jar
protobuf-java-2.5.0.jar
servlet-api.jar
transaction-api-1.1.jar
xpp3-1.1.4c.jar
xstream-1.4.7.jar 

如果你想要一个更短的列表开始,我想除了https://code.google.com/p/google-api-java-client/wiki/Setup#Download_Library_with_Dependencies我还必须添加

google-api-services-storage-v1-rev2-1.18.0-rc.jar
joda-time-2.3.jar

【讨论】:

    猜你喜欢
    • 2014-12-04
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多