ClassNotFoundException en sabor personalizado usando kotlin

Definí mi propio sabor y configuré sourceSet:

sourceSets { main.java.srcDirs += 'src/main/kotlin' // WORKS myflavor.java.srcDirs += 'src/myflavor/kotlin' // DOESN'T WORK } 

aquí está mi estructura de proyecto:

enter image description here

pero … recibo el siguiente error:

 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 

sin embargo, al usar sourceSet funciona … estaré agradecido por su ayuda.

Este es un error en el complemento kotlin-gradle para Android y se solucionará en 0.9.488 o superior. Gracias por el informe!

En mi caso, olvidé apply plugin: 'kotlin-android' en el file gradle. Aunque mi proyecto se construyó con éxito, lanzó java.lang.ClassNotFoundException en time de ejecución. Estoy usando Kotlin 1.1.1

Cuando convertí la fuente a kotlin, también recibí el error. Mi solución fue cambiar los sets de origen en gradle.

Antes :

 sourceSets { main.java.srcDirs += 'src/main/kotlin' } 

Ahora :

 sourceSets { main.java.srcDirs += 'src/main/java' } 

Intente agregar ambos a main.java.srcDirs porque quiere que ambos compilen sí?

 sourceSets { main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/myflavor/kotlin' } 

Puedo confirmar que al less con el plugin de Kotlin versión 1.1.1 y 1.1.2 el error está solucionado y puedes usar carpetas de kotlin ( recomendadas en lugar de carpetas de Java ) con diferentes sabores:

 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' } 

Tuve el mismo problema. En mi caso, estaba construyendo una biblioteca y una aplicación de testing para acceder a la biblioteca.

Cuando convertí el proyecto a kotlin, agregué las dependencies kotlin relevantes al file gradle para la biblioteca pero no para la aplicación principal.

Asegúrese de que las siguientes líneas estén en todos sus files gradle relevantes:

 apply plugin: "kotlin-android" dependencies { ... implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" ... } 
  • Convierta la function de Scala a la function de Kotlin
  • Comstack el código de kotlin tanto para JVM como para JavaScript
  • Rellene Cadena con Firestre
  • Controlar el ciclo de vida de las cookies en el servlet de Ktor 0.9.0
  • Director de Android: Cómo retener el estado de las vistas de los cambios de orientación
  • Herencia explícita de Any in Kotlin - ¿Puede y cómo se hace?
  • Kotlin: cómo henetworkingar del suscriptor de RxJava
  • ¿Hay algún documento sobre modificadores de acceso en Kotlin?
  • NoSuchMethodError al llamar al método
  • No se pudo encontrar la class databinding.FragmentBinding
  • Faltan numbers de línea en playstore crashdumps