5

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

我的 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 错误(红色下划线),上面写着“预期的类 Sample 在 apiMain 中没有实际声明”,但 apiMain 取决于具有实际声明的 jvmMain。

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

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

无论如何,项目编译得很好,我可以运行 apiMain,但 IDE 错误真的让我很恼火。

4

2 回答 2

7

这是一个已知的 IDE 错误。在此处查看 YouTrack 票。

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

于 2019-02-23T17:34:02.933 回答
2

它们应该在相同的包名下。

还要检查您的包名称是否与您收到错误的包名称相同

预期类 Sample 在apiMain中没有实际声明

您需要有包 apiMain。

就我而言,我有 在此处输入图像描述 而且我必须在资源中创建两个文件夹 在此处输入图像描述

于 2021-10-22T11:59:39.560 回答