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

如何用批处理脚本运行含多文件与Maven依赖的IntelliJ Kotlin项目?

问题:多文件Kotlin项目+Maven依赖的批处理运行报错(未解析引用)

我有一个IntelliJ Kotlin项目,包含多份文件(部分位于子目录),且依赖apache.poi与apache.poi.ooxml这两个Maven库。已能用批处理脚本运行单文件项目,但添加更多文件后出现“未解析引用”错误。

Main.kt代码

fun main(args: Array<String>) {
    println("Hello World!")
    worker.prepareXlsxToAirtable()
    println("Program is finished")
}

可运行的单文件批处理脚本(注释worker行时)

cd C:\Users\user\IdeaProjects\AppsApiScript
call kotlinc src\main\kotlin\Main.kt -d bin
kotlin -cp bin MainKt
pause

报错信息

C:\Users\user\IdeaProjects\AppsApiScript>call kotlinc src\main\kotlin\Main.kt -d bin
src\main\kotlin\Main.kt:3:5: error: unresolved reference: worker
    worker.prepareXlsxToAirtable()
    ^
Hello World!
Program is finished

C:\Users\user\IdeaProjects\AppsApiScript>

解决方案

1. 编译所有Kotlin源文件(含子目录)

原脚本仅编译了Main.kt,未处理其他依赖文件(如worker相关类),导致引用无法解析。需用递归通配符指定所有Kotlin文件:

call kotlinc src\main\kotlin\**/*.kt -d bin

说明:**/*.kt会递归匹配src\main\kotlin下所有子目录中的.kt文件,确保所有依赖类都被编译到bin目录。

2. 引入Maven依赖Jar包

项目依赖的apache.poi和apache.poi.ooxml需要在编译和运行时加入类路径:

  1. 在项目根目录新建lib文件夹,将apache.poi、apache.poi.ooxml及其所有依赖Jar包放入其中(比如poi-ooxml-schemas.jar、xmlbeans.jar等)
  2. 修改批处理脚本,在编译和运行命令中加入lib目录的Jar包

完整的批处理脚本

@echo off
cd C:\Users\user\IdeaProjects\AppsApiScript

:: 编译所有Kotlin文件,同时引入lib下的依赖Jar
call kotlinc src\main\kotlin\**/*.kt -classpath "lib/*.jar" -d bin

:: 运行时指定类路径(bin为编译后的类文件,lib为依赖Jar)
kotlin -cp "bin;lib/*.jar" MainKt

pause

注意事项

  • 确保lib目录包含apache.poi和apache.poi.ooxml的全部依赖Jar,遗漏会导致运行时错误
  • Windows系统类路径分隔符用;,若为Linux/macOS则替换为:
  • worker类需与Main.kt同包或设为public,避免访问权限问题

内容的提问来源于stack exchange,提问作者Nikita Avramenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:43:22