Решил попробовать котлин-скрипт <https://kotlinlan...
# russian
a
Решил попробовать котлин-скрипт https://kotlinlang.org/docs/tutorials/command-line.html#using-the-command-line-to-run-scripts Запускаю -
$ kotlinc -script list_folders.kts .
получаю:
error: unable to instantiate class List (list.kts): java.lang.NoClassDefFoundError: kotlin/script/templates/standard/ScriptTemplateWithArgs
Что я делаю не так?
Copy code
$ kotlin -version
Kotlin version 1.3.50-release-112 (JRE 1.8.0_212-b04)
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment Corretto-8.212.04.2 (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM Corretto-8.212.04.2 (build 25.212-b04, mixed mode)
MacOS свежая
s
@ilya.chernikov FYI
i
Не нашелся
kotlin-script-runtime.jar
автоматически. А как поставлен котлин? brew?
a
Да
brew install kotlin
. Как там написано.
i
Я посмотрю, почему так происходит. Workaround пока - найти
kotlin-script-runtime.jar
и добавить его в
-cp
в командной строке.
a
kotlinc -include-runtime -classpath ~/.konan/kotlin-native-macos-1.2-eap-9117/konan/lib/kotlin-script-runtime.jar -script list.kts .
- так?
Что харрактерно, на linux ошибка ровно та же (котлин ставил
sdk install kotlin
)
i
~/.konan/kotlin-native-macos-1.2-eap-9117/konan/lib/kotlin-script-runtime.jar
это какой-то странный путь, brew обычно ставит не туда
brew ставит в
/usr/local/Cellar/kotlin/1.3.50/libexec/lib/
, но это похоже не спасает, я буду разбираться.
a
Да,
otlinc -include-runtime -classpath /usr/local/Cellar/kotlin/1.3.50/libexec/lib/kotlin-script-runtime.jar -script list.kts .
не помогло
i
1.3.60 eap работает правильно (можно скачать отсюда - https://github.com/JetBrains/kotlin/releases/tag/v1.3.60-eap-23), 1.3.41, я подозреваю, тоже. Это с 1.3.50 видимо продолб случился.
Да, точно, это я не осознал сразу. Вот это ишью - https://youtrack.jetbrains.com/issue/KT-33554
Т.е. работающий workaround, если хочется остаться на 1.3.50 такой: - переименовать скрипт в
*.main.kts
- запускать с:
Copy code
kotlinc -cp /usr/local/Cellar/kotlin/1.3.50/libexec/lib/kotlin-main-kts.jar -script script.main.kts
a
Спасибо, работает
Но
kscript
лучше- там и импорт библиотек легко сделать, и скрипт исполняемым сделать можно
i
Импорт депенденсей есть и в
main-kts
, вот тут есть пример - https://github.com/Kotlin/KEEP/blob/master/proposals/scripting-support.md#example-scripts Но в целом вполне возможно что и лучше, он предназначен для этого.