Как включить файл 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").

Другие вопросы по тегам