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のバージョンを上げることにする。
同じタグの記事
同じカテゴリの記事