Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅在我的电脑上的Android项目中ClassNotFoundException_Java_Android_Kotlin_Noclassdeffounderror_Classnotfoundexception - Fatal编程技术网

Java 仅在我的电脑上的Android项目中ClassNotFoundException

Java 仅在我的电脑上的Android项目中ClassNotFoundException,java,android,kotlin,noclassdeffounderror,classnotfoundexception,Java,Android,Kotlin,Noclassdeffounderror,Classnotfoundexception,最近,当我准备在家里用Windows8.1在我的电脑上完成我的工作时,我发现这个项目不能正常工作——它编译,在模拟器上运行,并在某个特定点崩溃(它在我的电脑上是100%可复制的) 然而,同样的存储库版本在Mac电脑和我的同事的Windows 10机器上都可以使用 提到的每个环境都使用Android Studio 2.3.1、gradle 3.3和Kotlin 1.1.1,并在API 25 x86_64映像上运行应用程序 该项目正在使用multidex 1.0.1库 发生崩溃是由于以下异常: E/

最近,当我准备在家里用Windows8.1在我的电脑上完成我的工作时,我发现这个项目不能正常工作——它编译,在模拟器上运行,并在某个特定点崩溃(它在我的电脑上是100%可复制的)

然而,同样的存储库版本在Mac电脑和我的同事的Windows 10机器上都可以使用

提到的每个环境都使用Android Studio 2.3.1、gradle 3.3和Kotlin 1.1.1,并在API 25 x86_64映像上运行应用程序

该项目正在使用multidex 1.0.1库

发生崩溃是由于以下异常:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.project.app, PID: 2533
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/project/package/SomeActivityKt$sam$Action1$22181393;
        at com.project.package.SomeActivity.getDataFor(SomeActivity.kt:164)
        at com.project.package.SomeActivity.getData(SomeActivity.kt:147)
        at com.project.package.SomeActivity.onResume(SomeActivity.kt:142)
        at android.app.Instrumentatcomn.callActivityOnResume(Instrumentatcomn.java:1269)
        at android.app.Activity.performResume(Activity.java:6783)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3406)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3469)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2732)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.project.package.SomeActivityKt$sam$Action1$22181393" on path: DexPathList[[zip file "/data/app/com.project.app-1/base.apk", zip file "/data/app/com.project.app-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_7_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_8_apk.apk", zip file "/data/app/com.project.app-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.project.app-1/lib/x86_64, /data/app/com.project.app-1/base.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_dependencies_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_0_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_1_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_2_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_3_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_4_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_5_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_6_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_7_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_8_apk.apk!/lib/x86_64, /data/app/com.project.app-1/split_lib_slice_9_apk.apk!/lib/x86_64, /system/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.project.package.SomeActivity.getDataFor(SomeActivity.kt:164) 
        at com.project.package.SomeActivity.getData(SomeActivity.kt:147) 
        at com.project.package.SomeActivity.onResume(SomeActivity.kt:142) 
        at android.app.Instrumentatcomn.callActivityOnResume(Instrumentatcomn.java:1269) 
        at android.app.Activity.performResume(Activity.java:6783) 
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3406) 
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3469) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2732) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6119) 
BaseActivity.kt

SomeActivity.kt-此崩溃

class SomeActivity : BaseActivity(), HasFullWindowProgress (...) {

    (...)

    private fun getDataFor(id: String) {

        apiClient.somethingList(id)
                .map { response -> response.toSomethingList() }
                .lifecycle(this)
                .showProgress(this)
                .observeOnMainThread() // <== line 164
                .subscribe({
                    LOG.info("Something list fetched ${it.size}")
                    adapter.setItems(it)

                }, defaultOnError("Fetching something list failed"))
    }
}
ActivityErrorHandlingExtensions.kt


几周前我遇到了类似的问题。下面是我为避免出现
ClassNotFoundException
而做的基本操作,在我的例子中,这是由于在更新androidstudio、gradle等之后的Multidex“配置”

  • compile'com.android.support:multidex:1.0.1'
    添加到应用程序gradle文件中的依赖项列表中
  • 移除
    Multidex.install(此)onCreate()
    方法编写>并在应用程序类中添加以下内容:

    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }
    
  • 我在更新gradle版本等之后出现了错误,所以请确保所有内容都是最新的


    希望有帮助。

    我没有在
    onCreate()
    中调用
    Multidex.install(this)
    ,因为我的
    App
    类继承了
    MultiDexApplication
    类的这种行为(
    attachBaseContext
    已经在那里实现)。所以我只添加了覆盖(这可能是多余的)。不幸的是,这根本没有帮助。它仍然在
    SomeActivity
    中崩溃(这不是我的应用程序中启动的第一个,顺便说一句)。你能为问题活动发布“工具->Kotlin->显示Kotlin字节码”的输出吗?@VyacheslavGerasimov请查看更新。我已经发布了
    getDataFor
    字节码。如果您需要更多,请告诉我,因为我不想花一整天的时间混淆所有2.5k行字节码:)字节码中是否有名为
    com/project/package/SomeActivityKt$sam$Action1$22181393
    的类?我想应该为传递给subscribe方法的lambda生成它。根据我的理论,它可能是用错误的名称生成的。如果它的名称正确,请尝试重新安装android SDK,如果您还没有安装的话。也许构建工具有问题。@VyacheslavGerasimov没有这样的类。我在寻找任何包含
    22181393
    SomeActivityKt
    sam
    的内容,我在这里发布的片段中只有两个位置。这真的很奇怪,因为我可以在
    AnotherActivity.kt
    getData
    中看到为代码生成的类似类:
    最终类com/project/package/AnotherActivityKt$sam$Action1$1c16c27d实现了rx/functions/Action1
    。所以我想它根本不是为
    SomeActivity
    生成的。有了这些信息,您认为重新安装SDK会有帮助吗?
    class AnotherActivity : BaseActivity(), HasFullWindowProgress (...) {
    
        (...)
    
        private fun getData() {
            somethingElse.user?.id?.let { id ->
    
                apiClient.somethingElseList()
                        .map { response -> response.toAnotherList(id) }
                        .lifecycle(this)
                        .showProgress(this)
                        .observeOnMainThread()
                        .subscribe({
                            onNewSomethingElseList(id, it)
                        }, defaultOnError("Fetching somethingElseList for somethingElse failed"))
            }
    
        }
    }
    
    fun <T> T.defaultOnError(message: String, vararg args: Any?): (Throwable) -> Unit where T : HasErrorHandler, T : Activity {
        val targetClass = javaClass
        val activity = this
        return { err ->
            val messageFormats = (args.toList() + err).toTypedArray()
            LoggerFactory.getLogger(targetClass).error(message, *messageFormats)
            errorHandler.default(err, activity)
        }
    }
    
    fun <T> Observable<T>.lifecycle(activity: RxAppCompatActivity) : Observable<T> {
        return compose(activity.bindToLifecycle<T>())
    }
    
    fun <T> Observable<T>.observeOnMainThread() : Observable<T> {
        return observeOn(AndroidSchedulers.mainThread())
    }
    
    fun <T> Observable<T>.showProgress(hasProgress: HasFullWindowProgress): Observable<T> {
        return compose {
            it.doOnSubscribe {
                MAIN_THREAD_WORKER.schedule {
                    hasProgress.fullWindowProgress.visibility = View.VISIBLE
                }
            }.doAfterTerminate {
                MAIN_THREAD_WORKER.schedule {
                    hasProgress.fullWindowProgress.visibility = View.GONE
                }
            }
        }
    }
    
      private final getDataFor(Ljava/lang/String;)V
       L0
        LINENUMBER 160 L0
       L1
        LINENUMBER 165 L1
       L2
        LINENUMBER 160 L2
       L3
        LINENUMBER 164 L3
       L4
        LINENUMBER 160 L4
       L5
        LINENUMBER 163 L5
       L6
        LINENUMBER 160 L6
       L7
        LINENUMBER 162 L7
       L8
        LINENUMBER 160 L8
       L9
        LINENUMBER 161 L9
       L10
        LINENUMBER 160 L10
        ALOAD 0
        GETFIELD com/project/package/SomeActivity.apiClient : Lcom/project/network/ApiClient;
        DUP
        IFNONNULL L11
        LDC "apiClient"
        INVOKESTATIC kotlin/jvm/internal/Intrinsics.throwUninitializedPropertyAccessException (Ljava/lang/String;)V
       L11
        ALOAD 1
        INVOKEVIRTUAL com/project/network/ApiClient.somethingList (Ljava/lang/String;)Lrx/Observable;
        GETSTATIC com/project/package/SomeActivity$getDataFor$1.INSTANCE : Lcom/project/package/SomeActivity$getDataFor$1;
        CHECKCAST rx/functions/Func1
       L12
        LINENUMBER 161 L12
        INVOKEVIRTUAL rx/Observable.map (Lrx/functions/Func1;)Lrx/Observable;
        ALOAD 0
        CHECKCAST com/trello/rxlifecycle/components/support/RxAppCompatActivity
       L13
        LINENUMBER 162 L13
        INVOKESTATIC com/project/extensions/ObservableExtensionsKt.lifecycle (Lrx/Observable;Lcom/trello/rxlifecycle/components/support/RxAppCompatActivity;)Lrx/Observable;
        ALOAD 0
        CHECKCAST com/project/widgets/HasFullWindowProgress
       L14
        LINENUMBER 163 L14
        INVOKESTATIC com/project/widgets/ProgressKt.showProgress (Lrx/Observable;Lcom/project/widgets/HasFullWindowProgress;)Lrx/Observable;
       L15
        LINENUMBER 164 L15
        INVOKESTATIC com/project/extensions/ObservableExtensionsKt.observeOnMainThread (Lrx/Observable;)Lrx/Observable;
        NEW com/project/package/SomeActivity$getDataFor$2
        DUP
        ALOAD 0
        INVOKESPECIAL com/project/package/SomeActivity$getDataFor$2.<init> (Lcom/project/package/SomeActivity;)V
        CHECKCAST rx/functions/Action1
        NEW com/project/package/SomeActivityKt$sam$Action1$22181393
        DUP
        ALOAD 0
        LDC "Fetching something list failed"
        ICONST_0
        ANEWARRAY java/lang/Object
        INVOKESTATIC com/project/extensions/ActivityErrorHandlingExtensionsKt.defaultOnError (Landroid/app/Activity;Ljava/lang/String;[Ljava/lang/Object;)Lkotlin/jvm/functions/Function1;
        DUP
        IFNONNULL L16
        POP
        POP2
        ACONST_NULL
        GOTO L17
       L16
        INVOKESPECIAL com/project/package/SomeActivityKt$sam$Action1$22181393.<init> (Lkotlin/jvm/functions/Function1;)V
       L17
        CHECKCAST rx/functions/Action1
       L18
        LINENUMBER 165 L18
        INVOKEVIRTUAL rx/Observable.subscribe (Lrx/functions/Action1;Lrx/functions/Action1;)Lrx/Subscription;
        POP
       L19
        LINENUMBER 170 L19
        RETURN
       L20
        LOCALVARIABLE this Lcom/project/package/SomeActivity; L0 L20 0
        LOCALVARIABLE id Ljava/lang/String; L0 L20 1
        MAXSTACK = 7
        MAXLOCALS = 2
    
    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }