![](/img/trans.png)
[英]Kotlin cannot access kotlin.jvm.functions.Function1 when calling kotlin function with java lambda
[英]error: cannot access KMappedMarker When calling kotlin class from Java project
I am migrating a Java android app to Kotlin class for class with Android Studio's Convert Java file to Kotlin file
.
我的 android 項目由三個模塊/項目組成,其中頂級項目沒有自己的代碼:
overall
├─ app
└─ model
我已經將model
中的文件轉換為 Kotlin 並且它被 Z20F35E630DAF394D88 中的model
類識別但是對於app
中的課程存在問題。 雖然 class 本身被接受為例如方法參數,但不能引用方法。 例如對於foo.ba()
android 工作室將顯示一個帶有 Javadoc 的框,但源文件中的術語帶有紅色下划線,錯誤是Cannot access kotlin.jvm.internal.markers.KMappedMarker
。
To see if the problem is due to Android Studio, I ran gradle --warning-mode all sudoqapp:assembleRelease
in the terminal which fails with error: cannot access KMappedMarker
and class file for kotlin.jvm.internal.markers.KMappedMarker not found
. 所以我假設錯誤出現在自動轉換的 build.gradle 文件中。
overall
有
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.5.0-RC'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
app
根本沒有 kotlin 引用,並且
model
有
apply plugin: 'kotlin'
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
}
buildscript {
ext.kotlin_version = '1.5.0-RC'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
將apply plugin: 'kotlin'
添加到app
的build.gradle
中,如https://stackoverflow.com/a/50262680所建議的那樣。
這可能不是我回答的正確線程,但我在使用 okHttpClient(用 Kotlin 編寫)在我的 Java(Java 17 和 Gradle 7.4)項目上調試相同問題時偶然發現了這個線程。 也許這對像我這樣迷失的靈魂有幫助。
我的解決方案是添加requires kotlin.stdlib;
在module-info.java
文件和id 'org.jetbrains.kotlin.jvm' version '1.7.0'
在build.gradle
文件中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.