Android Kotlin:java.lang.NoClassDefFoundError:<KotlinObject>的解析失败
我们的Android应用程序的每一秒运行,我们得到一个崩溃说
java.lang.NoClassDefFoundError: Failed resolution of: Lin/blahapp/xxx/BlahUtil
BlahUtil是一个带有@JvmStatic标注的kotlin对象。 我从Android应用程序的其余部分(All in java)调用这些静态方法。
我们使用multidex 1.0.1。
我在android studio 2.1.2上,使用JDK 7。
相关的gradle配置:
compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 16 targetSdkVersion 23 } dexOptions { incremental true dexInProcess true javaMaxHeapSize "10g" preDexLibraries true } buildscript { ext.kotlin_version = '1.0.3' dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin-android' dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" }
跟踪:
at in.blahapp.xxx.OurActivity at android.app.Activity.performCreate(Activity.java:6251) at ndroid.app.Instrumentation.callActivityOnCreate at android.app.ActivityThread.performLaunchActivity at android.app.ActivityThread.handleLaunchActivity at android.app.ActivityThread.-wrap11 at android.app.ActivityThread$H.handleMessage at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.ClassNotFoundException: Didn't find class "in.blahapp.xxx.BlahUtil" on path: DexPathList[[dex file ....
logcat输出
您应该关闭“即时运行”。 Android Studio – >首选项 – >生成,执行,部署 – >即时运行。 关掉一切。
java.lang.ClassNotFoundException
是一个有趣的例外调试。 值得注意的是,因为它可以出于任何原因。 在这种情况下,由于其他的发射行为,最有可能是由于无法初始化类而发生。 如果您具有静态加载的资源,在本质上是单例加载的,则在JVM中创建类时打开文件或任何“独占”资源,当它第二次初始化时,因为该类已加载到JVM中 ,无论您是否重新启动应用程序。 当加载类的第二个实例发生时,它与现有的冲突,并从JVM中删除这两个实例 ,使第三次执行运行得很好。
我不得不看你的代码是积极的,但它是最有可能的(尤其是与@JvmStatic
注释),你失败的第二个静态加载类。 失败时,所有实例都将从JVM中删除,并重复该过程。
我发现唯一的解决方法是设置android.compileOptions.incremental = false
详情请参阅此问题 。
- 在计算数字时检查EditText是否为空
- Kotlin inline关键字导致IntelliJ IDEA覆盖率报告0%
- 如何在Android Studio中配置Kotlin版本?
- Lint在Java类上读取Kotlin对象时崩溃
- Android库模块在使用纯Kotlin模块的类时不会编译
- 如何在Anko中调试“无法解析com.google.android:android”错误
- 打开失败:在kotlin中ENOENT(没有这样的文件或目录)
- AndroidStudio / Kotlin – 未解决的参考:ReadWriteProperty – Kotlin版本1.0.0-beta-1038
- Kotlin Textview id引用不适用于非英文字符