VS Code中Kotlin跨文件自定义类引用未解析问题求助
解决VS Code中Kotlin多文件编译的"unresolved reference"问题
嘿,我一眼就看出问题出在哪了——不是你缺什么扩展,也不是VS Code配置有问题,而是Code Runner默认只编译当前打开的单个Kotlin文件,没把同目录下的MyApp.kt一起加进编译命令里。你看系统执行的命令里只有kotlinc App.kt,根本没提MyApp.kt,编译器当然找不到这个类啦!
两种解决办法,按需选:
1. 临时手动编译(快速测试用)
直接在终端里跑到你的src目录,执行完整的编译命令,把两个文件都列出来:
cd ".../testapp/src/" && kotlinc App.kt MyApp.kt -include-runtime -d App.jar && java -jar App.jar
这样kotlinc会同时编译两个文件,生成的App.jar里就包含MyApp类了,运行起来就正常了。
2. 修改Code Runner配置(一劳永逸)
让Code Runner自动帮你编译当前目录下所有Kotlin文件,以后多文件项目都不用手动改命令:
- 按
Ctrl+,打开VS Code设置面板 - 搜索「Code Runner: Executor Map」,点击「编辑 in settings.json」
- 找到
kotlin对应的配置项,把原来的命令替换成下面这段:
这里的关键是把原来的"kotlin": "cd $dir && kotlinc *.kt -include-runtime -d $fileNameWithoutExt.jar && java -jar $fileNameWithoutExt.jar"$fileName换成了*.kt,这样编译时会自动包含当前目录下所有.kt文件。
额外提醒
如果以后你把类放到自定义包里面(比如package com.myproject),记得在每个Kotlin文件顶部加上包声明,导入的时候用完整的包路径(比如import com.myproject.MyApp)。不过你现在用的是默认包,只要编译时包含文件就没问题,不用额外加包声明和导入语句。
内容的提问来源于stack exchange,提问作者João Farias
相关产品推荐
相关产品推荐

