Kotlin 1.2.31がいつの間にかリリースされていた

Kotlin 1.2.31がいつの間にかリリースされていた。

どんな新機能があるのかはわからないが、
java9で発生していた、ウォーニングメッセージやjava10でコンパイルできない問題が回避されている。

Kotlin 1.2.21 java9でのウォーニングメッセージ

1
2
3
4
5
6
7
8
9
10
11
12
13
$ kotlinc -version
info: kotlinc-jvm 1.2.21 (JRE 9.0.4+11)
$ kotlinc Test.kt
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.intellij.util.text.StringFactory to constructor java.lang.String(char[],boolean)
WARNING: Please consider reporting this to the maintainers of com.intellij.util.text.StringFactory
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
$ kotlin TestKt
java.class.version:53.0
java.runtime.version:9.0.4+11
java.version:9.0.4
java.vm.version:9.0.4+11

コンパイル時にウォーニングが表示されるだけで、コンパイルできるし、実行もできる。

Kotlin 1.2.21 java10ではコンパイルできない

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ kotlinc -version
info: kotlinc-jvm 1.2.21 (JRE 10+46)
exception: java.lang.ArrayIndexOutOfBoundsException: 446
        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)
    ...
$ kotlinc Test.kt
exception: java.lang.ArrayIndexOutOfBoundsException: 446
        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)
    ...

kotlincのバージョンを見ることも、コンパイルすることもできない。

しかし、コンパイルしておけば、実行はできる。

1
2
3
4
5
$ kotlin TestKt
java.class.version:54.0
java.runtime.version:10+46
java.version:10
java.vm.version:10+46

Kotlin 1.2.31 java9、java10どちらも問題なし。

1
2
3
4
5
6
7
8
$ kotlinc -version
info: kotlinc-jvm 1.2.31 (JRE 9.0.4+11)
$ kotlinc Test.kt
$ kotlin TestKt
java.class.version:53.0
java.runtime.version:9.0.4+11
java.version:9.0.4
java.vm.version:9.0.4+11
1
2
3
4
5
6
7
8
$ kotlinc -version
info: kotlinc-jvm 1.2.31 (JRE 10+46)
$ kotlinc Test.kt
$ kotlin TestKt
java.class.version:54.0
java.runtime.version:10+46
java.version:10
java.vm.version:10+46

とりあえず、Kotlinのバージョンを上げることにする。

同じタグの記事
同じカテゴリの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA