【问题标题】:java.lang.NoClassDefFoundError: com.amazonaws.services.s3.AmazonS3Clientjava.lang.NoClassDefFoundError:com.amazonaws.services.s3.AmazonS3Client
【发布时间】:2014-02-02 08:16:28
【问题描述】:

我已经在我的 Eclipse (ADT eclipse) 中导入了 S3Uploader 示例,我正在尝试运行它。

我已经导入了项目,然后添加了以下 jars 项目 > 属性 > java 构建路径 > 添加 jars

02/02/2014 01:24 PM 6,376,630 aws-android-sdk-1.7.1.1-debug.jar 2014 年 2 月 2 日下午 1:14 281,550 aws-android-sdk-1.7.1.1-s3.jar 02/02/2014 01:24 PM 5,587,005 aws-android-sdk-1.7.1.1.jar

项目编译和构建很好。但是当我运行它时,它会给出以下异常

02-02 13:39:03.151: E/dalvikvm(20716): Could not find class 'com.amazonaws.services.s3.AmazonS3Client', referenced from method com.amazonaws.demo.s3uploader.S3UploaderActivity.<init>
02-02 13:39:03.151: W/dalvikvm(20716): VFY: unable to resolve new-instance 40 (Lcom/amazonaws/services/s3/AmazonS3Client;) in Lcom/amazonaws/demo/s3uploader/S3UploaderActivity;
02-02 13:39:03.151: D/dalvikvm(20716): VFY: replacing opcode 0x22 at 0x0004
02-02 13:39:03.151: D/dalvikvm(20716): VFY: dead code 0x0006-0018 in Lcom/amazonaws/demo/s3uploader/S3UploaderActivity;.<init> ()V
02-02 13:39:03.161: W/dalvikvm(20716): VFY: unable to find class referenced in signature (Lcom/amazonaws/services/s3/AmazonS3Client;)
02-02 13:39:03.161: W/dalvikvm(20716): VFY: unable to resolve static field 33 (US_WEST_2) in Lcom/amazonaws/regions/Regions;
02-02 13:39:03.161: D/dalvikvm(20716): VFY: replacing opcode 0x62 at 0x0005
02-02 13:39:03.161: D/dalvikvm(20716): VFY: dead code 0x0007-003c in Lcom/amazonaws/demo/s3uploader/S3UploaderActivity;.onCreate (Landroid/os/Bundle;)V
02-02 13:39:03.161: D/AndroidRuntime(20716): Shutting down VM
02-02 13:39:03.161: W/dalvikvm(20716): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
02-02 13:39:03.161: E/AndroidRuntime(20716): FATAL EXCEPTION: main
02-02 13:39:03.161: E/AndroidRuntime(20716): java.lang.NoClassDefFoundError: com.amazonaws.services.s3.AmazonS3Client
02-02 13:39:03.161: E/AndroidRuntime(20716):    at com.amazonaws.demo.s3uploader.S3UploaderActivity.<init>(S3UploaderActivity.java:45)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at java.lang.Class.newInstanceImpl(Native Method)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at java.lang.Class.newInstance(Class.java:1409)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at android.app.Instrumentation.newActivity(Instrumentation.java:1040)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1777)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at android.app.ActivityThread.access$1500(ActivityThread.java:135)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at android.os.Looper.loop(Looper.java:150)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at android.app.ActivityThread.main(ActivityThread.java:4385)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at java.lang.reflect.Method.invokeNative(Native Method)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at java.lang.reflect.Method.invoke(Method.java:507)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
02-02 13:39:03.161: E/AndroidRuntime(20716):    at dalvik.system.NativeStart.main(Native Method)

我也看过AWS SDK NoClassDefFoundError: com.amazonaws.services.s3.AmazonS3Client

它也说明了我已经做过的事情。

我该如何解决?

【问题讨论】:

  • 在你的构建路径中,为了和导出,是否检查了库?
  • 当我尝试在“订购和导出”中勾选亚马逊库时,由于内存不足问题,我的项目无法运行,我需要重新启动 Eclipse...
  • ...我按照此处的步骤解决了这个问题,以增加 Eclipse 可用的堆大小:wiki.eclipse.org/…

标签: java android amazon-web-services amazon-s3


【解决方案1】:

您可能需要按照our blog 中列出的步骤导出库以在 Android 应用程序中使用。

【讨论】:

  • 这应该是正确的答案——尤其是。因为它包含一个增加 Eclipse 可用堆内存的链接:wiki.eclipse.org/…
【解决方案2】:

我自己解决了这个错误:

创建了一个 libs 文件夹(libs 不是 lib)并将所有 jar 复制到该文件夹​​。它工作正常。 ADT 会自动在 libs 文件夹中的 jar 上添加构建时间依赖项。它运行良好。

最初我的 jars 在 lib 文件夹中,我对它有明确的依赖。所以它在编译时工作,但这些库没有打包在 APK 中。这很奇怪,但我也在某处读过这个。

【讨论】:

    猜你喜欢
    • 2017-06-16
    • 2015-11-18
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2021-08-28
    • 2018-09-20
    相关资源
    最近更新 更多