Ожидаемый класс не имеет фактического объявления
Я делаю мультиплатформенный проект.
Часть моего файла Gradle выглядит так
...
kotlin {
jvm()
jvm("api")
js()
mingwX64("mingw")
sourceSets {
...
val jvmMain by getting {
dependencies {
implementation ("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}
}
val jvmTest by getting {
dependencies {
implementation ("org.jetbrains.kotlin:kotlin-test")
implementation ("org.jetbrains.kotlin:kotlin-test-junit")
}
}
val apiMain by getting {
dependencies {
dependsOn(jvmMain)
}
}
val jsMain by getting {
dependencies {
implementation ("org.jetbrains.kotlin:kotlin-stdlib-js")
}
}
...
}
}
Теперь в источниках commonsMain я получаю ошибку IDE (красное подчеркивание), которая говорит, что "ожидаемый образец класса не имеет фактического объявления в apiMain", но apiMain зависит от jvmMain, который имеет фактическое объявление.
Я не думаю, что мне нужно фактическое объявление в apiMain, так как у меня уже есть в jvm.
Должен ли я использовать другой подход при настройке исходных наборов?
В любом случае проект компилируется нормально, и я могу запустить apiMain, но ошибка IDE действительно раздражает меня.
3 ответа
В моем случае оказалось, что что-то в моей папке «.idea» было повреждено. Я закрыл Android Studio, удалил этот каталог из корня моего проекта, а затем снова открыл проект. Файл .idea был автоматически воссоздан, и моя проблема исчезла.
Я понял это, потому что при создании нового приложения KMM с помощью мастера не было той же ошибки, которую я видел с ожидаемыми/фактическими классами.