Kotlin IllegalStateException: recurso no encontrado en classpath: kotlin / .kotlin_string_table

Intento jugar un poco con Kotlin en mi aplicación para Android y tengo problemas para llamar a las funciones de extensión. La aplicación se bloquea inmediatamente con el siguiente seguimiento de la stack:

04-23 13:31:22.415 32606-32606/com.example.kotlin.test E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.kotlin.test, PID: 32606 java.lang.ExceptionInInitializerError at org.jetbrains.kotlin.load.kotlin.reflect.RuntimeModuleData$Companion.create(RuntimeModuleData.kt:34) at kotlin.reflect.jvm.internal.InternalPackage$moduleByClassLoader$cff17278.getOrCreateModule(moduleByClassLoader.kt:54) at kotlin.reflect.jvm.internal.KClassImpl$descriptor$1.invoke(KClassImpl.kt:31) at kotlin.reflect.jvm.internal.KClassImpl$descriptor$1.invoke(KClassImpl.kt:26) at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.get(ReflectProperties.java:84) at kotlin.reflect.jvm.internal.KClassImpl.getDescriptor(KClassImpl.kt) at kotlin.reflect.jvm.internal.KClassImpl.getScope(KClassImpl.kt:43) at kotlin.reflect.jvm.internal.KClassImpl.getProperties(KClassImpl.kt:84) at kotlin.reflect.jvm.internal.KClassImpl.getProperties(KClassImpl.kt:72) at kotlin.reflect.ReflectPackage$KClassExtensions$6beb0f9b.getDeclanetworkingProperties(KClassExtensions.kt:25) at kotlin.reflect.ReflectPackage.getDeclanetworkingProperties(KClassExtensions.kt:1) at com.example.test.kotlin.api.model.DatabaseObject$$TImpl.deflate(DatabaseObject.kt:40) at com.example.test.kotlin.api.model.impl.Model.deflate(Model.kt) at com.example.test.kotlin.api.model.impl.Model.<init>(Model.kt:28) at com.example.test.kotlin.api.model.impl.TestModel.<init>(TestModel.kt:23) at com.example.app.TestModelIndexFragment.onCreate(TestModelIndexFragment.java:122) at android.support.v4.app.Fragment.performCreate(Fragment.java:1763) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220) at android.app.Activity.performStart(Activity.java:5949) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389) at android.app.ActivityThread.access$900(ActivityThread.java:147) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) 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:898) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) Caused by: java.lang.IllegalStateException: Built-in library initialization failed. Please ensure you have kotlin-runtime.jar in the classpath: java.lang.IllegalStateException: Resource not found in classpath: kotlin/.kotlin_string_table at org.jetbrains.kotlin.builtins.KotlinBuiltIns.initialize(KotlinBuiltIns.java:75) at org.jetbrains.kotlin.builtins.KotlinBuiltIns.getInstance(KotlinBuiltIns.java:93) at org.jetbrains.kotlin.platform.JavaToKotlinClassMapBuilder.init(JavaToKotlinClassMapBuilder.java:35) at org.jetbrains.kotlin.platform.JavaToKotlinClassMap.<init>(JavaToKotlinClassMap.java:44) at org.jetbrains.kotlin.platform.JavaToKotlinClassMap.<clinit>(JavaToKotlinClassMap.java:35)             at org.jetbrains.kotlin.load.kotlin.reflect.RuntimeModuleData$Companion.create(RuntimeModuleData.kt:34)             at kotlin.reflect.jvm.internal.InternalPackage$moduleByClassLoader$cff17278.getOrCreateModule(moduleByClassLoader.kt:54)             at kotlin.reflect.jvm.internal.KClassImpl$descriptor$1.invoke(KClassImpl.kt:31)             at kotlin.reflect.jvm.internal.KClassImpl$descriptor$1.invoke(KClassImpl.kt:26)             at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.get(ReflectProperties.java:84)             at kotlin.reflect.jvm.internal.KClassImpl.getDescriptor(KClassImpl.kt)             at kotlin.reflect.jvm.internal.KClassImpl.getScope(KClassImpl.kt:43)             at kotlin.reflect.jvm.internal.KClassImpl.getProperties(KClassImpl.kt:84)             at kotlin.reflect.jvm.internal.KClassImpl.getProperties(KClassImpl.kt:72)             at kotlin.reflect.ReflectPackage$KClassExtensions$6beb0f9b.getDeclanetworkingProperties(KClassExtensions.kt:25)             at kotlin.reflect.ReflectPackage.getDeclanetworkingProperties(KClassExtensions.kt:1)             at com.example.test.kotlin.api.model.DatabaseObject$$TImpl.deflate(DatabaseObject.kt:40)             at com.example.test.kotlin.api.model.impl.Model.deflate(Model.kt)             at com.example.test.kotlin.api.model.impl.Model.<init>(Model.kt:28)             at com.example.test.kotlin.api.model.impl.TestModel.<init>(TestModel.kt:23)             at com.example.app.TestModelIndexFragment.onCreate(TestModelIndexFragment.java:122)             at android.support.v4.app.Fragment.performCreate(Fragment.java:1763)             at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)             at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)             at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)             at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)             at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)             at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)             at android.app.Activity.performStart(Activity.java:5949)             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389)             at android.app.ActivityThread.access$900(ActivityThread.java:147)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5254)             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:898)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) Caused by: java.lang.IllegalStateException: Resource not found in classpath: kotlin/.kotlin_string_table at org.jetbrains.kotlin.builtins.BuiltinsPackageFragment.getStream(BuiltinsPackageFragment.kt:86) at org.jetbrains.kotlin.builtins.BuiltinsPackageFragment.<init>(BuiltinsPackageFragment.kt:55) at org.jetbrains.kotlin.builtins.KotlinBuiltIns.<init>(KotlinBuiltIns.java:114) at org.jetbrains.kotlin.builtins.KotlinBuiltIns.initialize(KotlinBuiltIns.java:70)             at org.jetbrains.kotlin.builtins.KotlinBuiltIns.getInstance(KotlinBuiltIns.java:93)             at org.jetbrains.kotlin.platform.JavaToKotlinClassMapBuilder.init(JavaToKotlinClassMapBuilder.java:35)             at org.jetbrains.kotlin.platform.JavaToKotlinClassMap.<init>(JavaToKotlinClassMap.java:44)             at org.jetbrains.kotlin.platform.JavaToKotlinClassMap.<clinit>(JavaToKotlinClassMap.java:35)             at org.jetbrains.kotlin.load.kotlin.reflect.RuntimeModuleData$Companion.create(RuntimeModuleData.kt:34)             at kotlin.reflect.jvm.internal.InternalPackage$moduleByClassLoader$cff17278.getOrCreateModule(moduleByClassLoader.kt:54)             at kotlin.reflect.jvm.internal.KClassImpl$descriptor$1.invoke(KClassImpl.kt:31)             at kotlin.reflect.jvm.internal.KClassImpl$descriptor$1.invoke(KClassImpl.kt:26)             at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.get(ReflectProperties.java:84)             at kotlin.reflect.jvm.internal.KClassImpl.getDescriptor(KClassImpl.kt)             at kotlin.reflect.jvm.internal.KClassImpl.getScope(KClassImpl.kt:43)             at kotlin.reflect.jvm.internal.KClassImpl.getProperties(KClassImpl.kt:84)             at kotlin.reflect.jvm.internal.KClassImpl.getProperties(KClassImpl.kt:72)             at kotlin.reflect.ReflectPackage$KClassExtensions$6beb0f9b.getDeclanetworkingProperties(KClassExtensions.kt:25)             at kotlin.reflect.ReflectPackage.getDeclanetworkingProperties(KClassExtensions.kt:1)             at com.example.test.kotlin.api.model.DatabaseObject$$TImpl.deflate(DatabaseObject.kt:40)             at com.example.test.kotlin.api.model.impl.Model.deflate(Model.kt)             at com.example.test.kotlin.api.model.impl.Model.<init>(Model.kt:28)             at com.example.test.kotlin.api.model.impl.TestModel.<init>(TestModel.kt:23)             at com.example.app.TestModelIndexFragment.onCreate(TestModelIndexFragment.java:122)             at android.support.v4.app.Fragment.performCreate(Fragment.java:1763)             at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)             at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)             at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)             at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)             at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)             at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)             at android.app.Activity.performStart(Activity.java:5949)             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389)             at android.app.ActivityThread.access$900(ActivityThread.java:147)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5254)             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:898)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 

Mi proyecto está compuesto de dos modules, test-kt y app , para las nuevas cosas de Kotlin y el código de Java existente, respectivamente. test-kt/build.gradle tiene lo siguiente:

 apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { minSdkVersion 9 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main.kotlin.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.0.0' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" } buildscript { ext.kotlin_version = '0.11.91.2' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.android.tools.build:gradle:1.1.0' } } repositories { mavenCentral() } 

He intentado agregar las libs de Kotlin como dependencies dentro de la app sin suerte. ¿Se me escapa algo?

EDITAR: tras una investigación más profunda, parece que esto solo ocurre cuando uso references de properties (como ::x ) y no cuando uso methods de extensión. Definitivamente he incluido kotlin-reflect … alguna idea?

Acabo de encontrar esto también cuando actualizo a la versión 0.11.91.2 de Kotlin. Aparentemente hay un problema donde el set de herramientas de Android no empaqueta un file antepuesto con un punto en los resources. (tenga en count que el file al que hace reference la exception, .kotlin_string_table, se antepone con un punto).

Se ha escrito una corrección, pero aún no se ha publicado. Puede intentar usar la versión instantánea de Kotlin para aprovecharla, o simplemente esperar la próxima actualización.

  • diferencia entre diversión en el bloque de object compañero y fuera de class en kotlin?
  • Temporizador RxJava2 y combinar
  • Spring Data JPA / Hibernate "No se puede ubicar Attribute con el nombre de stack"
  • Propiedades de extensión de Kotlin no reconocidas en V1.0.1
  • ¿Qué significa la palabra key header / impl en kotlin?
  • Framework Azure Mobile App con Android (solo Kotlin)
  • ¿Convertir mi proyecto de estudio andorid existente a kotlin?
  • ¿Hay alguna manera de hacer reference a la class de Java para una function de nivel superior de Kotlin?
  • La aplicación no implementa dagger.android.HasDispatchingActivityInjector
  • Forma idiomática de generar una cadena alfanumérica aleatoria en Kotlin
  • ¿Es posible tener extensiones de function en lambdas?