我一直在尝试上传一个视频我走上使用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:
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
发布评论