首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kotlin IllegalStateException:未在类路径中找到资源: kotlin/.kotlin_string_table

Kotlin IllegalStateException:未在类路径中找到资源: kotlin/.kotlin_string_table
EN

Stack Overflow用户
提问于 2015-04-24 01:42:08
回答 1查看 1.9K关注 0票数 2

我试图在我的Android应用程序中使用Kotlin,但在调用扩展函数时遇到了问题。应用程序立即崩溃,并显示以下堆栈跟踪:

代码语言:javascript
复制
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.getDeclaredProperties(KClassExtensions.kt:25)
            at kotlin.reflect.ReflectPackage.getDeclaredProperties(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.getDeclaredProperties(KClassExtensions.kt:25)
            at kotlin.reflect.ReflectPackage.getDeclaredProperties(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.getDeclaredProperties(KClassExtensions.kt:25)
            at kotlin.reflect.ReflectPackage.getDeclaredProperties(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)

我的项目由两个模块组成,test-ktapp,分别用于新的Kotlin内容和现有的Java代码。test-kt/build.gradle具有以下特性:

代码语言:javascript
复制
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()
}

我也尝试过将Kotlin库作为依赖项添加到app中,但没有成功。我是不是漏掉了什么?

编辑:经过进一步研究,这似乎只在我使用属性引用(如::x)时发生,而不是在我使用扩展方法时发生。我肯定包括了kotlin-reflect..。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-25 01:23:00

我在升级到Kotlin版本0.11.91.2时也遇到了这个问题。显然,Android工具集不会将带有点的文件打包到资源中,这显然是一个问题。(请注意,异常引用的文件.kotlin_string_table的前缀是一个点)。

A fix已经写好了,但还没有发布。您可以尝试使用Kotlin的快照版本来利用它,否则只需等待下一次更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29830715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档