Edited at

Kotlin script で NoClassDefFoundError: kotlin/script/templates/standard/ScriptTemplateWithArgs が発生する


Kotlin script を実行すると NoClassDefFoundError: kotlin/script/templates/standard/ScriptTemplateWithArgs というエラーが発生してしまう

今回の環境。


  • Kotlin 1.3.50 (Homebrew でインストールしたもの)

  • Java: OpenJDK 11.0.2

  • OS: macOS Mojave

シンプルなソースコードを用意。


hello.kts

println("Hello, World!")


実行するとエラーになってしまう。

$ kotlinc -script hello.kts

error: unable to instantiate class Hello (hello.kts): java.lang.NoClassDefFoundError: kotlin/script/templates/standard/ScriptTemplateWithArgs


Kotlin 1.3.50 の不具合が原因

Bug and Issue Tracker に載っていた。

影響を受ける Kotlin のバージョンは 1.3.50。

不具合は Kotlin 1.3.60 のリリースでは解消される見込み。

NCDF running kotlin script from command line : KT-33529


Affected versions 1.3.50

Fix in builds 1.3.60-dev-1605


不具合についての情報は NoClassDefFoundError ScriptTemplateWithArgs | YouTrack - Bug and Issue Tracker を検索して見つけることができた。

Kotlin のリリースサイクルについての情報は見つからなかったが、リリース日について公式ブログを確認してみると、

Releases | Kotlin Blog


  • Kotlin 1.3.50 / August 22, 2019

  • Kotlin 1.3.40 / June 19, 2019

  • Kotlin 1.3.30 / April 12, 2019

不具合が修正された Kotlin 1.3.60 は2019年10月ごろにリリースされるのではないかと想像する。


回避策

java コマンドで Kotlin コンパイラを実行することで回避できる。

$ java -jar /usr/local/Cellar/kotlin/1.3.50/libexec/lib/kotlin-compiler.jar -script hello.kts 

Hello, World!