簡體   English   中英

Kotlin調用kotlin時無法訪問kotlin.884033330366588.functions.Function1 function與java lambda

[英]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"
}

參考:將 Kotlin 添加到現有應用程序

Android 工作室:

就我而言,我更改了內部 function 的簽名,這是導致此異常的原因。 嘗試clean你的項目並運行應用程序,異常將消失

方法 1) 在您的項目文件中搜索 Function1 並將其重命名為 First。

方法 2) 在您的項目文件中搜索 Function1 並刪除它的所有匹配項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM