我有一个Generator.kts文件。当我使用以下命令执行它时:

kotlinc -script Generator.kts

一切都按预期进行。

但是,现在我的脚本已经扩大了,我需要将该类分成多个文件。

我这样做了,但是当我尝试再次执行它时,出现以下错误:
Generator.kts:8:23: error: unresolved reference: CSVReader
        val csvData = CSVReader().readCSV()
                      ^
Generator.kts:10:23: error: unresolved reference: Folders
        val folders = Folders()
                      ^
Generator.kts:14:9: error: unresolved reference: KeyStore
        KeyStore().generateKeyStoreFile(

基本上,它找不到我创建的所有类(CSVReader.kt,Folders.kt和KeyStore.kt)。所有这些类都在同一文件夹(包括Generator.kts)中。

如何运行使用多个文件的Kotlin脚本?

最佳答案

您可以将所有子脚本编译为 Artifact ,然后将其添加到类路径中

或者,您可以使用诸如kscript之类的第三方工具将它们即时包含在您的主脚本中。

#!/usr/bin/env kscript

@file:Include("utils.kt")

val robustMean = listOf(1.3, 42.3, 7.).median()
println(robustMean)

有关详细信息和示例,请参见https://github.com/holgerbrandl/kscript#ease-prototyping-with-include

免责声明:我是kscript的贡献者。

10-08 17:59