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.

  • No se puede comprimir Rxjava Observables
  • ¿Cómo puedo enmascarar una contraseña con Anko?
  • kotlin para anular los types de protobuf a String
  • ¿Cómo manejar correctamente los valores de Byte superiores a 127 en Kotlin?
  • Asignar un solo elemento a un atributo de valor IntArray en las annotations de Kotlin
  • RxJava: onBackpressureBlock () comportamiento extraño
  • Repetir una textura en una región de textura
  • ¿Por qué esta aplicación Spring Boot no puede encontrar la página principal?
  • Alcance externo de Kotlin
  • Anomalías de cobertura de código Android (Kotlin)
  • ¿Por qué Kotlin no me deja usar la extensión writeText?