(注:このブログはもう更新していません)この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

[クラウド帳票エンジンDocurain]

Kotlin + Gradle + Java10が動かない

タイトル通り。Kotlin1.2 + Gradle4.6 + Java10で動かすとエラーになります。こんな感じ。

Caused by: java.lang.ArrayIndexOutOfBoundsException: 448
    at org.jetbrains.org.objectweb.asm.ClassReader.readUnsignedShort(ClassReader.java:2464)
    at org.jetbrains.org.objectweb.asm.ClassReader.readUTF8(ClassReader.java:2525)
    at org.jetbrains.org.objectweb.asm.ClassReader.readModule(ClassReader.java:761)
    at org.jetbrains.org.objectweb.asm.ClassReader.accept(ClassReader.java:646)
    at org.jetbrains.org.objectweb.asm.ClassReader.accept(ClassReader.java:507)
    at org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleInfo$Companion.read(JavaModuleInfo.kt:67)
    at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder.findSystemModule(CliJavaModuleFinder.kt:44)
    at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder.access$findSystemModule(CliJavaModuleFinder.kt:25)
    at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder$systemModules$1.invoke(CliJavaModuleFinder.kt:37)
    at org.jetbrains.kotlin.cli.jvm.modules.CliJavaModuleFinder$systemModules$1.invoke(CliJavaModuleFinder.kt:25)
    at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:149)
    at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:109)
    at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:133)
    at kotlin.sequences.FlatteningSequence$iterator$1.ensureItemIterator(Sequences.kt:254)
    at kotlin.sequences.FlatteningSequence$iterator$1.hasNext(Sequences.kt:241)
    at kotlin.sequences.SequencesKt___SequencesKt.none(_Sequences.kt:1239)
    at org.jetbrains.kotlin.cli.jvm.compiler.ClasspathRootsResolver.addModularRoots(ClasspathRootsResolver.kt:227)
    at org.jetbrains.kotlin.cli.jvm.compiler.ClasspathRootsResolver.computeRoots(ClasspathRootsResolver.kt:124)
    at org.jetbrains.kotlin.cli.jvm.compiler.ClasspathRootsResolver.convertClasspathRoots(ClasspathRootsResolver.kt:79)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:230)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:114)
    at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:409)
    at org.gradle.kotlin.dsl.support.KotlinCompilerKt.kotlinCoreEnvironmentFor(KotlinCompiler.kt:205)
    at org.gradle.kotlin.dsl.support.KotlinCompilerKt.compileTo(KotlinCompiler.kt:137)
    at org.gradle.kotlin.dsl.support.KotlinCompilerKt.compileToDirectory(KotlinCompiler.kt:117)
    at org.gradle.kotlin.dsl.codegen.StandardKotlinFileCompiler.compileToDirectory(ApiExtensionsJar.kt:88)
    at org.gradle.kotlin.dsl.codegen.ApiExtensionsJarGenerator.compileExtensionsTo(ApiExtensionsJar.kt:57)
    at org.gradle.kotlin.dsl.codegen.ApiExtensionsJarGenerator.generate(ApiExtensionsJar.kt:45)
    at org.gradle.kotlin.dsl.codegen.ApiExtensionsJarKt.generateApiExtensionsJar(ApiExtensionsJar.kt:28)
    ...

解消法

$HOME/.gradleを消して、Java9に戻すと動きました。

Kotlinのランタイムで内部的に使用しているASMのバージョンがJava10に対応していないことが原因と思われる。