Kotlin脚本无法实例化类

时间:2019-10-16 04:42:03

标签: kotlin kotlin-script

Kotlin Cookbook by Ken Kousen -- 1.5 Executing a Kotlin Script尝试产生“无法实例化类”错误。

$ 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 个答案:

答案 0 :(得分:3)

为了工作,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