idea 启动 springboot 项目报错 kotlin 版本不兼容

2020-08-26   30 次阅读


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.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

一介死肥宅程序员,希望世界和平