预期 class 没有实际声明

Expected class has no actual declaration

我正在做一个多平台项目。

我的 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 错误(红色下划线),上面写着 "expected class Sample has no actual declaration in apiMain",但是 apiMain 依赖于具有实际声明的 jvmMain。

我认为我不需要在 apiMain 中进行实际声明,因为我已经在 jvm 中进行了声明。

我应该采用不同的方法来设置我的源集吗?

无论如何,项目编译正常,我可以 运行 apiMain,但是 IDE 错误真的让我很烦。

这是一个已知的 IDE 错误。查看 YouTrack 票证 here

现在,您可以使用 @Suppress("NO_ACTUAL_FOR_EXPECT") 来消除 IDE 中的警告。不过我不会真的推荐它,因为如果你缺少任何 actual 实现,你会得到运行时崩溃而不是编译时错误。

它们应该在同一个包名下。

同时检查你的包名是否与你报错的包名相同

预期 class 示例在 apiMain

中没有实际声明

您需要安装 apiMain 包。

就我而言,我有 我必须在资源中创建两个文件夹