使用 java lambda 调用 kotlin 函数时,Kotlin 无法访问 kotlin.jvm.functions.Function1

2022-09-04 02:23:30

我正在尝试从Java调用以下Kotlin函数

override fun First(list: LinqList<ElementType>, condition: (ElementType) -> Boolean) : ElementType

喜欢这个

int first = list.First(list,(x) -> x == 5);

但我得到以下错误

Error java: cannot access kotlin.jvm.functions.Function1
  class file for kotlin.jvm.functions.Function1 not found

我尝试过谷歌搜索,但我在任何地方都找不到答案

提前致谢


答案 1

当我使用最新的稳定版本(当前为1.3.30)为Java模块配置Kotlin编译器和运行时时,我的问题得到了修复

只需转到工具> Kotlin >使用Gradle在Project > Android中配置Kotlin,然后选择您的Java模块,选择“单个模块”单选按钮,然后选择您的版本并确定。


答案 2

另一种解决方案:

如果您的Android项目中有多个模块,请确保您已将以下配置添加到使用kotlin的每个模块中:

Step(1)- Project build.gradle:

// Project build.gradle file.
buildscript {
    ext.kotlin_version = '1.3.30'
    ...
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

步骤(2)- 在每个模块中使用 kotlin:

apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'

...

dependencies {
   implementation "androidx.core:core-ktx:1.0.1"
   implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

参考:将 Kotlin 添加到现有应用


推荐