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

编程入门 行业动态 更新时间:2024-10-15 22:30:00
本文介绍了AWS SDK的NoClassDefFoundError:com.amazonaws.services.s3.AmazonS3Client的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我一直在尝试上传一个视频我走上使用AWS SDK S3服务水桶。

这是在code,我从亚马逊的例子S3上传了。唯一的东西我做的不同是:

  • 在不创建一个新的水桶,但重用一个已经存在。
  • 使用predetermined的URI,其中图像文件。

    公共无效uploadToS3(视图v){     AmazonS3Client s3Client =新AmazonS3Client(新BasicAWSCredentials(         Constants.ACCESS_KEY_ID,Constants.SECRET_KEY));     的String [] filePathColumn = {MediaStore.Images.Media.DATA};     光标光标= getContentResolver()查询(了fileURI,filePathColumn,         NULL,NULL,NULL);     cursor.moveToFirst();     INT参数:columnIndex = cursor.getColumnIndex(filePathColumn [0]);     字符串文件路径= cursor.getString(参数:columnIndex);     cursor.close();     //使图像数据置于S3。     尝试 {         //s3Client.createBucket(Constants.getPictureBucket());         PutObjectRequest POR =新PutObjectRequest(                 Constants.getPictureBucket(),Constants.PICTURE_NAME,                 新的java.io.File(文件路径)); //内容类型确定                                              //按文件扩展名。         s3Client.putObject(POR);     }赶上(例外的例外){         // displayAlert(上传失败,exception.getMessage());     } }

  • 问题是,一旦我试图创建 AmazonS3Client ,应用程序崩溃与 noClassFound 例外。

    这是我的logcat:

    十月五号至17日:42:02.555:E / AndroidRuntime(20310):致命异常:主要 10月5号至17号:42:02.555:E / AndroidRuntime(20310):java.lang.IllegalStateException:无法执行活动的方法 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在android.view.View $ 1.onClick(View.java:2154) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在android.view.View.performClick(View.java:2538) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在android.view.View $ PerformClick.run(View.java:9152) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在android.os.Handler.handleCallback(Handler.java:587) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在android.os.Handler.dispatchMessage(Handler.java:92) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在android.os.Looper.loop(Looper.java:123) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在android.app.ActivityThread.main(ActivityThread.java:3691) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在java.lang.reflect.Method.invokeNative(本机方法) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在java.lang.reflect.Method.invoke(Method.java:507) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:847) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在dalvik.system.NativeStart.main(本机方法) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):由:java.lang.reflect.InvocationTargetException 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在java.lang.reflect.Method.invokeNative(本机方法) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在java.lang.reflect.Method.invoke(Method.java:507) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在android.view.View $ 1.onClick(View.java:2149) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):11 ...更多 10月5号至17号:42:02.555:E / AndroidRuntime(20310):java.lang.NoClassDefFoundError的:产生的原因com.amazonaws.services.s3.AmazonS3Client 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在com.thepoosh.aws.s3upload.android.CameraToAmazonaws3Activity.uploadToS3(CameraToAmazonaws3Activity.java:63) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):14 ...更多 10月5号至17号:42:02.555:E / AndroidRuntime(20310):抛出java.lang.ClassNotFoundException:产生的原因com.amazonaws.services.s3.AmazonS3Client装载机dalvik.system.PathClassLoader [/data/app/com.thepoosh .aws.s3upload.android-1.apk] 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在java.lang.ClassLoader.loadClass(ClassLoader.java:551) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):在java.lang.ClassLoader.loadClass(ClassLoader.java:511) 10月5号至17号:42:02.555:E / AndroidRuntime(20310):15 ...更多

    解决方案

    您code给出的NoClassDefFoundError ,因为你没有SDK的库添加到您的项目。这里是你如何能做到这一点。

    • 右键点击您的项目名称 - >新建 - >文件夹并将其命名为库(不带 S)
    • 您应该添加AWS-Android的SDK-XXX-debug.jar在这个库文件夹
    • 右键点击您的项目名称 - >属性 - >选择Java Build Path由左 - >点击添加罐 - >浏览到您的项目库这是我们创建的
    • 选择AWS-Android的SDK-XXX-debug.jar
    • 点击确定,就大功告成了。

    希望这有助于

    I've been trying to upload a video I took to a bucket of S3 services using the AWS SDK.

    this is the code that I took from the Amazon example for S3 uploading. The only things I'm doing differently is:

  • 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() ); } }

  • the problem is, once I try and create the AmazonS3Client, the app crashes with a noClassFound exception.

    here is my 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

    解决方案

    Your code gives NoClassDefFoundError because you didnt add the sdk's library to your project. Here is how you can do it

    • 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.

    Hope this helps

    更多推荐

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

    本文发布于:2023-11-03 19:01:39,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1555832.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:NoClassDefFoundError   SDK   AWS   amazonaws   AmazonS3Client

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!