如何在 kotlin 脚本中包含 jar 文件

How to include a jar file in kotlin script

我想从我的 kotlin 脚本文件中分离出一些通用代码,以便可以重复使用。

我这样做了:

// MyLib.kt

package myLib
fun say_hello(name : String)
{
   println("hello $name")
}

我编译这个文件来创建一个 jar 文件:

kotlinc myLib.kt -include-runtime -d myLib.jar

然后我创建了一个脚本文件:

// myScript.kts

import myLib.*
say_hello("Arvind")

但是我无法编译脚本文件,因为它既不识别 myLib 包也不识别 say_hello() 函数。

正确的做法是什么。

问题更新: 我正在使用 kscript 运行 我的脚本。打字很多,例如,

kotlin -cp myLib.jar myScript.kts

每次我都必须运行脚本,从而破坏了使用kscript的动机。

有没有办法让我每次命令行都不需要给出jar的路径。相反,我想以 kscript 方式使用它,即

./myScript

您需要在classpath中包含myLib.jar,例如:

kotlin -cp myLib.jar myScript.kts

另外,你不需要用 -include-runtime 编译 myLib,除非你想创建一个 self-contained 和可运行的 jar(见 example)。

更新:

myScript.kts 重命名为 myScript.main.kts 并将其内容更改为:

#!/usr/bin/env kotlin

@file:DependsOn("myLib.jar")

import myLib.*

say_hello("Arvind")

您现在可以调用它了(不要忘记设置执行权限):

./myScript.main.kts

如果您要包含 myLib.kt 脚本而不是 myLib.jar 文件,请将 @file:DependsOn("myLib.jar") 替换为 @file:Import("myLib.kt")