idea 启动 springboot 项目报错 kotlin 版本不兼容
异常现象
启动报错异常为:
***************************
APPLICATION FAILED TO START
***************************
Description:
An attempt was made to call the method kotlin.collections.ArraysKt.copyInto([B[BIII)[B but it does not exist. Its class, kotlin.collections.ArraysKt, is available from the following locations:
jar:file:/**/mavenRepo/org/jetbrains/kotlin/kotlin-stdlib/1.2.71/kotlin-stdlib-1.2.71.jar!/kotlin/collections/ArraysKt.class
It was loaded from the following location:
file:/**/Public/mavenRepo/org/jetbrains/kotlin/kotlin-stdlib/1.2.71/kotlin-stdlib-1.2.71.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of kotlin.collections.ArraysKt
原因分析
最开始百思不得其解,因为项目 pom 里面并没有依赖kotlin
,只是感觉应该是 idea 的锅,因为这个东西跟 idea 自己的包有关。
后面百度了很久才发现是因为项目使用了okhttp
,而okhttp4.x
版本有依赖kotlin
,由此引发了这里版本的问题。
解决方案
既然时版本不对,那就在 pom 里面写一个可以使用的版本的依赖:
<!-- https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.3.72</version>
</dependency>
指定 kotlib-stdlib 的版本后,这个问题就解决了。
ps:版本并不唯一,一个不行,可以去 maven 仓库找其他版本试试。
参考文章
Q.E.D.