【问题标题】:NoClassDefFoundError: com/amazonaws/mobile/client/AWSMobileClientNoClassDefFoundError:com/amazonaws/mobile/client/AWSMobileClient
【发布时间】:2020-07-29 02:05:42
【问题描述】:

我对适用于 Android 的 AWS Amplify 有疑问。我正在使用 Cognito 和 S3,两者都是通过 Amplify 配置的。当我初始化我的应用程序时,它会因 API 级别低于 21 而崩溃。如果我以 API 级别 21 或更高级别运行它,它会成功运行。这是一个例外:

07-28 22:02:08.693 5105-5105/com.marcast.sistmovildonatto.debug E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: com/amazonaws/mobile/client/AWSMobileClient
        at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin.<init>(AWSCognitoAuthPlugin.java:103)
        at com.marcast.sistmovildonatto.DidonatoApplication.onCreate(DidonatoApplication.kt:16)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:999)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4151)
        at android.app.ActivityThread.access$1300(ActivityThread.java:130)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4745)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ClassNotFoundException: com.amazonaws.mobile.client.AWSMobileClient
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
        at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin.<init>(AWSCognitoAuthPlugin.java:103) 
        at com.marcast.sistmovildonatto.DidonatoApplication.onCreate(DidonatoApplication.kt:16) 
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:999) 
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4151) 
        at android.app.ActivityThread.access$1300(ActivityThread.java:130) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:4745) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:511) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
        at dalvik.system.NativeStart.main(Native Method)

我正在使用 Cognito 的访客身份验证,以及对对象的公共访问权限的 S3。崩溃发生在这里:

class DidonatoApplication: Application() {
    override fun onCreate() {
        super.onCreate()
        try {
            Amplify.addPlugin(AWSCognitoAuthPlugin()) //HERE throws exception
            Amplify.addPlugin(AWSS3StoragePlugin())
            Amplify.configure(applicationContext)
            Log.i("DidonatoMobile", "Initialized Amplify")
        } catch (error: AmplifyException) {
            Log.e("DidonatoMobile", "Could not initialize Amplify", error)
        }
    }
}

有人知道可能是什么问题吗?

【问题讨论】:

标签: android aws-amplify


【解决方案1】:

我遇到了类似的问题,但找不到不同的类定义。

我注意到我对 build.gradle 文件中各种 Amplify 插件的实现使用了不同的版本。匹配版本修复了错误(在我的情况下,我使用了最低版本 - 1.0.0)。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 2020-10-05
    相关资源
    最近更新 更多