[英]Kotlin cannot access kotlin.jvm.functions.Function1 when calling kotlin function with java lambda
我正在嘗試從 Java 呼叫以下 Kotlin function
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.3.30)為我的 Java 模塊配置 Kotlin 編譯器和運行時時,我的問題得到了解決
只需轉到Tools > Kotlin > Configure Kotlin in Project > Android with Gradle並選擇您的 Java 模塊並選擇Single module單選按鈕,然后選擇您的版本和OK 。
另一個解決方案:
如果您的 android 項目中有多個模塊,請確保已將以下配置添加到每個使用 kotlin 的模塊中:
步驟(1)- 項目 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"
}
Android 工作室:
就我而言,我更改了內部 function 的簽名,這是導致此異常的原因。 嘗試clean
你的項目並運行應用程序,異常將消失
方法 1) 在您的項目文件中搜索 Function1 並將其重命名為 First。
方法 2) 在您的項目文件中搜索 Function1 並刪除它的所有匹配項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.