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

VS Code中运行依赖其他文件的Kotlin文件报错的解决方法

Kotlin编译报错"unresolved reference: foo"的解决方法

问题场景

桌面有一个master文件夹,内含main.kt和foo.kt两个Kotlin文件:

  • main.kt代码:
import master

fun main() {
println("hello")
foo()
}
  • foo.kt代码:
import master

fun foo(){
println("code from foo")
}

执行命令kotlinc hello.kt -d hello.jar时,出现错误:error: unresolved reference: foo

问题原因及解决方法

核心问题

  1. 编译命令写错文件名:你要编译的是main.kt,不是hello.kt
  2. 包声明逻辑错误:错误使用import master,要么没声明对应包,要么不需要包却加了无效导入
  3. 编译未覆盖依赖文件:只编译单个文件时,编译器找不到foo()的定义

方案1:无包结构(轻量运行)

这是最适配你轻量需求的方案:

  • 删掉两个文件里的import master,修改后代码:
    main.kt:
    fun main() {
    println("hello")
    foo()
    }
    
    foo.kt:
    fun foo(){
    println("code from foo")
    }
    
  • 执行编译命令(必须同时包含两个文件):
    kotlinc main.kt foo.kt -d hello.jar
    
  • 运行jar包:
    java -jar hello.jar
    

方案2:使用master包结构

如果确实需要包结构:

  • 把两个文件开头的import master改成package master,修改后:
    main.kt:
    package master
    
    fun main() {
    println("hello")
    foo()
    }
    
    foo.kt:
    package master
    
    fun foo(){
    println("code from foo")
    }
    
  • 编译命令同样需要包含两个文件:
    kotlinc main.kt foo.kt -d hello.jar
    
  • 运行时需要指定主类的全限定名:
    java -cp hello.jar master.MainKt
    

内容的提问来源于stack exchange,提问作者Kyle Angelo Gonzales

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:15:38