如何在 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")
。
我想从我的 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")
。