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 Boot
与 mockwebserver
一起使用,只需将以下 属性 添加到您的 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>
当我尝试创建一个新的 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 Boot
与 mockwebserver
一起使用,只需将以下 属性 添加到您的 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>