我决定将我的所有src/main/java目录重命名为src/main/Kotlin,在这样做的同时,我注意到我的主模块的代码在src/jvmMain/java中,所以我将它移到了src/commonMain/kotlin(我想为什么不呢?),一切都很好,一切都解决了。但是在重新启动IDE之后,当启动我的项目时,出现了一些问题:
错误:无法找到或加载主类MainKt
原因:java.lang.类未找到异常:主要Kt
build.gradle.kts
我通过将main函数移到jvmMain来解决;现在看起来是这样的:
fun main() = application { App() }
,为什么将其放在commonMain中会破坏所有内容?
- commonMain中的文件警告我
“上下文接收器”功能是试验性的,应显式启用
,但同时在jvmMain的代码中没有问题,因为我已经为它添加了一个required标志,我认为这个问题与主要问题有关。
纯粹的问题:为什么没有解决将app的main函数放在commonMain模块而不是jvmMain模块的问题?
1条答案
按热度按时间wd2eg0qa1#
经过更多的研究,我对这些模块的结构得出了结论,commonMain模块包含共享代码(如kmm中的
shared
模块),将由项目的平台特定模块和jvmMain模块使用,jvmMain模块用于调用应用程序的main()
函数,这就是为什么main()
函数必须放置在jvmMain模块中。这意味着将所有程序代码放入commonMain模块是错误的决定;相反,我必须只放置共享组件,例如MaterialTheme颜色和填充。
dependencies diagram