kotlin/TypeCastException 尝试创建 OkHttpClient 对象时

kotlin/TypeCastException when trying to create OkHttpClient object

当我尝试创建一个新的 OkHttpClient 对象时抛出异常

我正在使用 OkHttp 3.11.0 和 OkIO 2.0.0-RC1。

Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/TypeCastException at okhttp3.ResponseBody.create(ResponseBody.java:210) at okhttp3.internal.Util.(Util.java:60) at okhttp3.OkHttpClient.(OkHttpClient.java:123) at p12.Main.main(Main.java:8) Caused by: java.lang.ClassNotFoundException: kotlin.TypeCastException at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 4 more

您是否将 kotlin stdlib 和 stdlib-common 依赖项添加到您的构建中?看来他们不在了。

我遇到了同样的问题。 将 kotlin-stdlib JAR 添加到构建路径

对我有用的解决方案(在此 github comment 中提到)是添加 okhttp 库本身:

Gradle 科特林 DSL:

testImplementation("com.squareup.okhttp3:okhttp:4.2.2")
testImplementation("com.squareup.okhttp3:mockwebserver:4.2.2")

Gradle Groovy DSL:

testImplementation 'com.squareup.okhttp3:okhttp:4.2.2'
testImplementation 'com.squareup.okhttp3:mockwebserver:4.2.2'

您的项目可能包含 okhttp 版本作为版本 3.x.x, 导致 mockwebserver 依赖于 okhttp 的错误版本,该版本也不包含对 kotlin-stdlib-common.

的传递依赖

如果您将 Spring Bootmockwebserver 一起使用,只需将以下 属性 添加到您的 pom

<okhttp3.version>4.x.x</okhttp3.version>

在 OSGi 中不使用 kotlin 库,而是使用 kotlin 包: https://kotlinlang.org/docs/reference/kotlin-osgi.html

好吧,我遇到了同样的问题,我像这样添加了 Kotlin 依赖项:

<dependency>
   <groupId>org.jetbrains.kotlin</groupId>
   <artifactId>kotlin-stdlib</artifactId>
   <version>1.4.32</version>
</dependency>