AWS SDK NoClassDefFoundError: com.amazonaws.services.s3.AmazonS3Client

Я пытался загрузить видео, которое я снял, в корзину сервисов S3, используя AWS SDK.

это код, который я взял из примера Amazon для загрузки S3. Единственное, что я делаю по-другому:

not creating a new bucket but reusing the one that is already there.

using a predetermined Uri for the file where the image is.

public void uploadToS3(View v) {
    AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(
        Constants.ACCESS_KEY_ID, Constants.SECRET_KEY));
    String[] filePathColumn = { MediaStore.Images.Media.DATA };
    Cursor cursor = getContentResolver().query(fileUri, filePathColumn,
        null, null, null);
    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String filePath = cursor.getString(columnIndex);
    cursor.close();

    // Put the image data into S3.
    try {
        //s3Client.createBucket(Constants.getPictureBucket());

        PutObjectRequest por = new PutObjectRequest(
                Constants.getPictureBucket(), Constants.PICTURE_NAME,
                new java.io.File(filePath)); // Content type is determined
                                             // by file extension.
        s3Client.putObject(por);
    } catch (Exception exception) {
        // displayAlert( "Upload Failure", exception.getMessage() );
    }
}

проблема в том, как только я пытаюсь создатьAmazonS3Clientприложение вылетает сnoClassFound исключение.

вот мой Logcat:

05-17 10:42:02.555: E/AndroidRuntime(20310): FATAL EXCEPTION: main
05-17 10:42:02.555: E/AndroidRuntime(20310): java.lang.IllegalStateException: Could not execute method of the activity
05-17 10:42:02.555: E/AndroidRuntime(20310):    at android.view.View$1.onClick(View.java:2154)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at android.view.View.performClick(View.java:2538)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at android.view.View$PerformClick.run(View.java:9152)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at android.os.Handler.handleCallback(Handler.java:587)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at android.os.Looper.loop(Looper.java:123)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at android.app.ActivityThread.main(ActivityThread.java:3691)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at java.lang.reflect.Method.invokeNative(Native Method)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at java.lang.reflect.Method.invoke(Method.java:507)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at dalvik.system.NativeStart.main(Native Method)
05-17 10:42:02.555: E/AndroidRuntime(20310): Caused by: java.lang.reflect.InvocationTargetException
05-17 10:42:02.555: E/AndroidRuntime(20310):    at java.lang.reflect.Method.invokeNative(Native Method)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at java.lang.reflect.Method.invoke(Method.java:507)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at android.view.View$1.onClick(View.java:2149)
05-17 10:42:02.555: E/AndroidRuntime(20310):    ... 11 more
05-17 10:42:02.555: E/AndroidRuntime(20310): Caused by: java.lang.NoClassDefFoundError: com.amazonaws.services.s3.AmazonS3Client
05-17 10:42:02.555: E/AndroidRuntime(20310):    at com.thepoosh.aws.s3upload.android.CameraToAmazonaws3Activity.uploadToS3(CameraToAmazonaws3Activity.java:63)
05-17 10:42:02.555: E/AndroidRuntime(20310):    ... 14 more
05-17 10:42:02.555: E/AndroidRuntime(20310): Caused by: java.lang.ClassNotFoundException: com.amazonaws.services.s3.AmazonS3Client in loader dalvik.system.PathClassLoader[/data/app/com.thepoosh.aws.s3upload.android-1.apk]
05-17 10:42:02.555: E/AndroidRuntime(20310):    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
05-17 10:42:02.555: E/AndroidRuntime(20310):    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
05-17 10:42:02.555: E/AndroidRuntime(20310):    ... 15 more
 thepoosh17 мая 2012 г., 10:15
@MuratNafiz, у меня нетlibs папка в моем проекте. я должен добавить это и положить что-то там?
 Murat Nafiz17 мая 2012 г., 10:14
ваша библиотека находится в & lt; libs & quot; папка? И правильно ли добавлен в ваш проект?
 thepoosh17 мая 2012 г., 10:06
@omidnazifi, что ты имеешь в виду? нет XML дляAWS SDK
 omid nazifi17 мая 2012 г., 10:05
Возможно проблема связана с вашими ресурсами, такими как main.xml

Ответы на вопрос(1)

Решение Вопроса

Ваш код даетNoClassDefFoundError потому что вы не добавили библиотеку SDK в свой проект. Вот как вы можете это сделать

Right click on your project name -> New -> Folder and name it "libs" (without "s) You should add "aws-android-sdk-X.X.X-debug.jar" in this library folder Right click on your project name -> Properties -> select Java Build Path from left -> Click Add Jars -> navigate to your projects libs which we created. select "aws-android-sdk-X.X.X-debug.jar" Click Ok and you are done.

Надеюсь это поможет

 14 нояб. 2013 г., 08:46
открытый финальный класс java.lang.Class реализует java.io.Serializable, java.lang.reflect.AnnotatedElement, java.lang.reflect.GenericDeclaration, java.lang.reflect.Type
 thepoosh17 мая 2012 г., 10:45
Боже мой, я такой новичок: S, как я это забыл?!?!?!
 22 окт. 2013 г., 20:11
Благодарю. Это решило и мою проблему. Но банка 6 МБ! Можем ли мы просто использовать s3 для загрузки фото?
 17 мая 2012 г., 10:43
Вы добавили интернет-разрешение в свой файл манифеста? Вы можете сделать это, добавив & lt; использовании-разрешения android: name = & quot; android.permission.INTERNET & quot; / & GT; вне тега приложения в вашем AndroidManifest.xml
 thepoosh17 мая 2012 г., 10:41
хорошо, единственная проблема сейчас: я получаюunknownHost ошибка, есть идеи как это исправить?

Ваш ответ на вопрос