我想从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")
。