首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OkHttp: NoSuchMethodError copyInto in TlsUtil

OkHttp: NoSuchMethodError copyInto in TlsUtil
EN

Stack Overflow用户
提问于 2019-08-02 17:14:31
回答 3查看 8.2K关注 0票数 9

使用RESTMock运行测试工具,我们会得到这个错误

代码语言:javascript
复制
java.lang.NoSuchMethodError: No static method copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; in class Lkotlin/collections/ArraysKt; or its super classes (declaration of 'kotlin.collections.ArraysKt' appears in /data/app/com.example.debug-1/base.apk)
FATAL EXCEPTION: pool-6-thread-1
Process: com.example.debug, PID: 6606
java.lang.NoSuchMethodError: No static method copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; in class Lkotlin/collections/ArraysKt; or its super classes (declaration of 'kotlin.collections.ArraysKt' appears in /data/app/com.example.debug-1/base.apk)
    at okhttp3.tls.internal.TlsUtil.newKeyManager(TlsUtil.kt:84)
    at okhttp3.tls.HandshakeCertificates$Builder.build(HandshakeCertificates.kt:144)
    at io.appflate.restmock.SslUtils.localhost(SslUtils.java:49)
    at io.appflate.restmock.RESTMockServer.setUpHttps(RESTMockServer.java:91)
    at io.appflate.restmock.RESTMockServer.init(RESTMockServer.java:74)
    at io.appflate.restmock.RESTMockServerStarter$1.run(RESTMockServerStarter.java:56)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)

这是问题中的在OkHttp中

,Kotlin可以将varargs看作一个Kotlin数组,然后调用像copyInto这样的扩展函数。

OkHttp 4.0.1,Kotlin 1.3.40,R8 1.5.41

我们的测试apk正确地包含了copyInto方法,因此我不认为这是proguard/R8问题:

我不知道下一步该测试什么。我在OkHttp的github问题页面上询问,他们建议我在这里发布链接

更新:仍然发生在OkHttp 4.1.0上。另外,我意识到这不可能是R8问题,因为R8不会从测试apk中删除代码。

EN

回答 3

Stack Overflow用户

发布于 2020-03-23 10:17:58

我也有同样的问题,然后在我的项目中添加了提到的库。它解决了我的问题:

maven:

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib -->
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
            <version>1.3.70</version>
        </dependency>

代码语言:javascript
复制
'org.jetbrains.kotlin:kotlin-stdlib:1.3.70'
票数 7
EN

Stack Overflow用户

发布于 2019-09-12 13:33:26

当我使用带有来自okhttp3.mockwebserver.MockWebServer的服务器证书的https启用的okhttp-tls时,我也遇到了同样的问题。

在我的例子中,问题在于,仅仅通过导入com.squareup.okhttp3:okhttp-tls:4.2.0依赖项,org.jetbrains.kotlin:kotlin-stdlib就被解决为1.2.71版本。

考虑到引入了copyInto方法,启动kotlin 1.3,它失败时的错误与您的错误相同。

我通过在我的gradle.build文件中显式地添加kotlin版本来修正它:

testRuntime 'org.jetbrains.kotlin:kotlin-stdlib:1.3.50'

票数 6
EN

Stack Overflow用户

发布于 2021-11-02 03:38:14

我也遇到了同样的问题,但我正在开发一个多模块的java项目。当单元测试时,在属于这个模块的kotlin-stdlib中为pom.xml添加一个依赖项是很有用的.

当我启动整个项目时,这个问题就出现了。最后,我发现这个依赖关系需要在整个项目的pom.xml中,我指的是项目根dir中的pom.xml。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57330923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档