Как включить файл jar в скрипт kotlin
Я хочу отделить общий код от моего файла сценария 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
1 ответ
Вам нужно включить myLib.jar
в classpath
, например:
kotlin -cp myLib.jar myScript.kts
Кроме того, вам не нужно компилировать myLib с -include-runtime
, если вы не хотите создать автономный и работающий jar (см. пример).
Обновить:
Переименовать myScript.kts
к myScript.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")
.