You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:16:20