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



我想从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,除非您想创建一个自包含且可运行的jar(请参阅示例(。

更新:

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")

最新更新