Скрипт Котлина не может создать экземпляр класса - PullRequest
0 голосов
/ 16 октября 2019

Попытка в Кулинарная книга Kotlin от Кена Кузена - 1.5 При выполнении сценария Kotlin выдает ошибку «невозможно создать экземпляр класса».

$ cat southpole.kts                                                                            
import java.time.*                                                                                                                   
val instant = Instant.now()
val southPole = instant.atZone(ZoneId.of("Antarctica/South_Pole"))
val dst = southPole.zone.rules.isDaylightSavings(instant)
println("It is ${southPole.toLocalTime()} (UTC${southPole.offset}) at the South Pole")
println("The South Pole ${if (dst) "is" else "is not"} on Daylight Savings Time")
$ kotlinc -script southpole.kts
OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
error: unable to instantiate class Southpole (southpole.kts): java.lang.NoClassDefFoundError: kotlin/script/templates/standard/ScriptTemplateWithArgs

kotlin version 1.3.50

1 Ответ

2 голосов
/ 16 октября 2019

Для работы println(...) требуется среда выполнения kotlin, которую необходимо добавить вручную.

Эта проблема описана здесь https://discuss.kotlinlang.org/t/possible-kts-bug/10162

..., это(скрипт) получает зависимости от модуля, поэтому вам нужно явно включить kotlin-script-runtime в зависимости модуля. (...) К сожалению, это не очень очевидно. Мы думаем о возможных решениях.

Похоже, что это улучшится в следующем Kotlin 1.3.60 выпуске https://youtrack.jetbrains.com/issue/KT-33529

Как рабочийвокруг, используйте:

$ sdk use kotlin 1.3.41
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...