如何从 Kotlin/Java 中运行 Kotlin-Script (.kts) 文件?

2022-09-01 02:33:35

我注意到IntelliJ可以将文件解析为Kotlin,代码编辑器将它们作为自由浮动的Kotlin文件进行选择。您还可以在 IntelliJ 中运行脚本,就像使用 main 方法运行 Kotlin 文件一样。脚本从上到下执行。.kts

这个表单非常适合我正在从事的项目,只要我知道一种从Java或Kotlin中使用它们的简单方法。

从 Java 或 Kotlin“运行”这些脚本的惯用方法是什么?


答案 1

请注意,Kotlin 中的脚本文件支持仍然几乎是实验性的。这是一个未记录的功能,我们仍在设计过程中。今天有效的方法可能会在明天改变,中断或消失。

也就是说,目前有两种方法可以调用脚本。您可以使用命令行编译器:

kotlinc -script foo.kts <args>

或者,您可以直接从 IntelliJ IDEA 调用脚本,方法是在编辑器或 .kts 文件的项目视图中右键单击,然后选择“运行...”:

Run .kts from IntelliJ IDEA


答案 2

KtsRunner

我发布了一个简单的库,让你从常规的 Kotlin 程序运行脚本。

https://github.com/s1monw1/KtsRunner

  1. 示例类

    data class ClassFromScript(val x: String)
    
  2. 文件.kts

    import de.swirtz.ktsrunner.objectloader.ClassFromScript
    
    ClassFromScript("I was created in kts")
    
  3. 用于加载类的代码

    val scriptReader =  Files.newBufferedReader(Paths.get("path/classDeclaration.kts"))
    val loadedObj: ClassFromScript = KtsObjectLoader().load<ClassFromScript>(scriptReader)
    println(loadedObj.x) // >> I was created in kts
    

如图所示,该类可用于执行脚本并返回其结果。该示例显示了一个脚本,该脚本创建通过该类型的实例加载,然后在常规程序中进行处理。KtsObjectLoader.ktsClassFromScriptKtsObjectLoader


推荐