Kotlin 1.2.31がいつの間にかリリースされていた。
どんな新機能があるのかはわからないが、
java9で発生していた、ウォーニングメッセージやjava10でコンパイルできない問題が回避されている。
Kotlin 1.2.21 java9でのウォーニングメッセージ
$ 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ではコンパイルできない
$ 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のバージョンを見ることも、コンパイルすることもできない。
しかし、コンパイルしておけば、実行はできる。
$ 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どちらも問題なし。
$ 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
$ 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のバージョンを上げることにする。
コメントを残す