【问题标题】:java.lang.NoClassDefFoundError at Runtime in Activity's inner classActivity 内部类中运行时的 java.lang.NoClassDefFoundError
【发布时间】:2015-04-29 11:03:17
【问题描述】:

我发现了很多类似的问题,但没有人帮助我。

我有下一个问题。我有完整的 Android 项目,我必须将它的功能导出到 .aar 库。首先,我创建了新项目并在放置源项目的位置创建了新模块。在这一步一切顺利,我在/build/outputs/aar/ 文件夹中获得了我的mylib.aar 文件。然后我创建了新项目来测试我的mylib.aar,因此我在Android Studio 中的app 文件夹下创建了libs 文件夹,并在我的测试项目的build.gradle 文件中添加了以下几行:

repositories {
    flatDir {dirs 'libs'}
}

dependencies {
    compile(name: 'mylib', ext: 'aar')
}

在清单文件中,我从库中添加了 MainActivity 的声明:

<activity android:name="com.testlib.mylib.MainActivity"
            android:label="MainActivity"/>

Android Studio 很好地找到了这个文件,我什至可以通过内置的反编译器观看源代码。但是,当我尝试从另一个未放在我的库中的活动开始此活动时,我收到此错误:

3838-3838/com.testapp.testsdkapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.testapp.testsdkapp, PID: 3838
    java.lang.NoClassDefFoundError: com.testlib.mylib.MainActivity$RegisterInBackgroundTask
            at com.testlib.mylib.MainActivity.registerInBackground(MainActivity.java:1551)
            at com.testlib.mylib.MainActivity.onCreate(MainActivity.java:269)
            at android.app.Activity.performCreate(Activity.java:5937)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

RegisterInBackgroundTask 是在库中我的 MainActivity 中声明的内部 public AsyncTask 类。我试图将mylib.aar 放在aar 文件夹中并以其他方式在build.gradle 中声明,但这对我没有帮助,我得到了类似的错误。

如果这些信息还不够,我会添加所需的代码部分等。所以请帮助我,如果你知道如何解决我的问题!谢谢。

【问题讨论】:

    标签: android android-studio noclassdeffounderror aar


    【解决方案1】:

    将 mylib.aar 作为模块导入您的项目并在依赖项中添加以下行

      compile project(':mylib')
    

    【讨论】:

    • 请详细描述
    • 感谢您的建议,但这个解决方案对我没有帮助,我得到了同样的错误;(
    • 是的,我猜如果没有这一行,它就不会在清单文件中看到我的类
    • 在代码中我有简单的 AsyncTask,我不知道为什么它没有看到这个类,我把它公开以防万一,但也没有帮助
    • new RegisterInBackgroundTask().execute(null, null, null);
    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多