4

我想从我的 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
4

1 回答 1

2

您需要在 中包含myLib.jarclasspath例如:

kotlin -cp myLib.jar myScript.kts

此外,您不需要使用 编译 myLib -include-runtime,除非您想创建一个独立且可运行的 jar(参见示例)。

更新:

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

#!/usr/bin/env kotlin

@file:DependsOn("myLib.jar")

import myLib.*

say_hello("Arvind")

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

./myScript.main.kts

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

于 2020-08-28T05:56:38.230 回答