使用kotlin的自定义风格中的ClassNotFoundException
我定义了我自己的风格,并设置sourceSet:
sourceSets { main.java.srcDirs += 'src/main/kotlin' // WORKS myflavor.java.srcDirs += 'src/myflavor/kotlin' // DOESN'T WORK }
这里是我的项目结构:
但是…我收到以下错误:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{xyz/xyz.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "xyz.MainActivity" on path: DexPathList[[zip file "/data/app/xyz/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209) 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) Caused by: java.lang.ClassNotFoundException: Didn't find class "xyz.MainActivity" on path: DexPathList[[zip file "/data/app/xyz/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at android.app.Instrumentation.newActivity(Instrumentation.java:1065) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199) 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) Suppressed: java.lang.ClassNotFoundException: xyz.MainActivity at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 13 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
然而,使用主要的源代码工程…我将不胜感激您的帮助。
这是Android的kotlin-gradle插件中的一个bug,它将被固定在0.9.488或更高。 感谢您的报告!
在我的情况下,我忘了在gradle文件中apply plugin: 'kotlin-android'
。 虽然我的项目已经成功构建,但它在运行时抛出java.lang.ClassNotFoundException
。 我正在使用Kotlin 1.1.1
当我把源代码转换成kotlin时,我也得到了错误。 我的修复正在改变gradle中的sourceSets。
之前 :
sourceSets { main.java.srcDirs += 'src/main/kotlin' }
现在 :
sourceSets { main.java.srcDirs += 'src/main/java' }
尝试添加两个main.java.srcDirs,因为你想让他们都编译是吗?
sourceSets { main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/myflavor/kotlin' }
我可以确认,至少在Kotlin插件版本1.1.1和1.1.2中,这个bug已经修复,你可以使用不同风格的kotlin文件夹( 建议不要使用java文件夹 ):
sourceSets { androidTest { java.srcDir file('src/androidTest') } test.java.srcDirs += 'src/test/kotlin' main.java.srcDirs += 'src/main/kotlin' flavor1.java.srcDirs += 'src/flavor1/kotlin' flavor2.java.srcDirs += 'src/flavor2/kotlin' }
我遇到过同样的问题。 在我的情况下,我正在建立一个图书馆和一个测试应用程序来访问图书馆。
当我将项目转换为kotlin时,它将相关的kotlin依赖关系添加到库的gradle文件中,但不包括主应用程序。
确保所有相关的gradle文件中包含以下行:
apply plugin: "kotlin-android" dependencies { ... implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" ... }
- 只有类允许在类文字的左侧
- 当我添加将RealmObject扩展到我的项目的ChatInformation kotlin类时,无法建立项目,错误在哪里?
- Kotlin的视图绑定扩展在65k方法限制之后停止工作
- Kotlin中AsyncTask的子类 – 无法在onPostExecute中使用主构造函数参数
- Unity C#和Layar SDK Java – AndroidJavaException
- 如何在GraphView库中添加一系列DataPoint?
- 一个简单的kotlin类与mockito测试引起MissingMethodInvocationException
- 斯卡拉+阿卡流+ libgdx + gradle =给我一个难的时间
- 无效的可绘制标记动画矢量