预期的类没有实际声明

e5nqia27  于 2022-10-07  发布在  其他
关注(0)|答案(3)|浏览(118)

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

我的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错误真的让我很恼火。

46scxncf

46scxncf1#

这是一个已知的IDE错误。请参阅YouTrack票证here

目前,您可以使用@Suppress("NO_ACTUAL_FOR_EXPECT")来消除IDE中的警告。不过,我并不建议您这样做,因为如果您缺少任何actual实现,您将得到运行时崩溃,而不是编译时错误。

esyap4oy

esyap4oy2#

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

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

预期的类样本在apiMain中没有实际声明

你需要把包裹送到邮局去。

在我的例子中,我有

,我必须在资源

中创建这两个文件夹

c0vxltue

c0vxltue3#

在我的例子中,结果是我的“.dea”文件夹中的某些内容被损坏了。我关闭了Android Studio,从我的项目根目录中删除了该目录,然后重新打开了项目。系统会自动重新创建.IDEA文件,我的问题也就解决了。

我之所以明白这一点,是因为使用向导创建新的KMM应用程序不会出现与使用Expect/Actual类相同的错误。

相关问题