当我尝试创建一个新的OkHttpClient对象时,会抛出异常
我正在使用OkHttp 3.11.0和OkIO 2.0.0-RC1。
线程“主”中的异常java.lang.NoClassDefFoundError:kotlin / TypeCastException 在okhttp3.ResponseBody.create(ResponseBody.java:210) 在okhttp3.internal.Util。(Util.java:60) 在okhttp3.OkHttpClient。(OkHttpClient.java:123) 在p12.Main.main(Main.java:8) 引起原因:java.lang.ClassNotFoundException:kotlin.TypeCastException 在java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:349) 在java.lang.ClassLoader.loadClass(ClassLoader.java:357) ...还有4个
答案 0 :(得分:7)
您是否已将kotlin stdlib和stdlib公用依赖项添加到构建中?看起来好像缺席了。
答案 1 :(得分:3)
我有同样的问题。 将kotlin-stdlib JAR添加到构建路径
答案 2 :(得分:3)
最适合我的解决方案(此github comment中已提及)是添加okhttp
库本身:
kotlin等级DSL:
testImplementation("com.squareup.okhttp3:okhttp:4.2.2")
testImplementation("com.squareup.okhttp3:mockwebserver:4.2.2")
Gradro Groovy DSL:
testImplementation 'com.squareup.okhttp3:okhttp:4.2.2'
testImplementation 'com.squareup.okhttp3:mockwebserver:4.2.2'
答案 3 :(得分:2)
您的项目很可能将okhttp
的版本包含为3.x.x
的版本,
导致mockwebserver
依赖于错误的okhttp
版本,该版本还不包含对kotlin-stdlib-common
的传递依赖。
如果您将Spring Boot与mockwebserver一起使用,只需将以下属性添加到pom中
<okhttp3.version>4.x.x</okhttp3.version>
答案 4 :(得分:1)
好吧,我遇到了同样的问题,我像这样添加了 Kotlin 依赖项:
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.4.32</version>
</dependency>
答案 5 :(得分:0)
在OSGi中,不要使用kotlin库,而是使用kotlin捆绑软件: https://kotlinlang.org/docs/reference/kotlin-osgi.html