TencentCloud / tencentcloud-sdk-java

Tencent Cloud API 3.0 SDK for Java
Apache License 2.0
519 stars 285 forks source link

OkHttp报错 Exception in thread "main" java.lang.NoSuchMethodError: kotlin.collections.ArraysKt.copyInto([B[BIII)[B #175

Closed wangtiewu closed 1 year ago

wangtiewu commented 1 year ago
com.tencentcloudapi tencentcloud-sdk-java 3.1.667

123

错误: Exception in thread "main" java.lang.NoSuchMethodError: kotlin.collections.ArraysKt.copyInto([B[BIII)[B at okio.Segment.writeTo(Segment.kt:169) at okio.Segment.compact(Segment.kt:152) at okio.Buffer.write(Buffer.kt:1491) at okio.Buffer.read(Buffer.kt:1503) at okio.Buffer.writeAll(Buffer.kt:1290) at okio.Options$Companion.buildTrieRecursive(Options.kt:189) at okio.Options$Companion.buildTrieRecursive(Options.kt:175) at okio.Options$Companion.buildTrieRecursive$default(Options.kt:107) at okio.Options$Companion.of(Options.kt:72) at okio.Options.of(Options.kt) at okhttp3.internal.Util.(Util.java:73) at okhttp3.OkHttpClient.(OkHttpClient.java:124) at okhttp3.OkHttpClient$Builder.(OkHttpClient.java:449) at com.tencentcloudapi.common.http.HttpConnection.(HttpConnection.java:39) at com.tencentcloudapi.common.AbstractClient.doRequestWithTC3(AbstractClient.java:502) at com.tencentcloudapi.common.AbstractClient.internalRequest(AbstractClient.java:350) at com.tencentcloudapi.ocr.v20181119.OcrClient.GeneralAccurateOCR(OcrClient.java:518)

zqfan commented 1 year ago

请问你运行环境jdk版本是多少啊。 看你依赖截图,可能是okio 3.2和okhttp 3.14有冲突导致的

wangtiewu commented 1 year ago

jdk1.8

1.8 UTF-8 1.8 1.8 1.2.0

//测试代码 Credential cred = new Credential("",""); OcrClient ocrClient = new OcrClient(cred, null); GeneralAccurateOCRRequest req = new GeneralAccurateOCRRequest(); req.setImageUrl(certFile); req.setIsPdf(true); GeneralAccurateOCRResponse resp; try { resp = ocrClient.GeneralAccurateOCR(req);

wangtiewu commented 1 year ago

后来按这么修改Pom后没有报这个错误了

com.squareup.okio okio 1.17.2
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>3.14.9</version>
    </dependency>
    <dependency>
        <groupId>com.tencentcloudapi</groupId>
        <artifactId>tencentcloud-sdk-java</artifactId>
        <!-- go to https://search.maven.org/search?q=tencentcloud-sdk-java and get the latest version. -->
        <!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 -->
        <version>3.1.667</version>
    </dependency>
zqfan commented 1 year ago

嗯,应该就是okio 3.2里相比1.17.2有接口变动不兼容了,导致okhttp3.14.9运行的时候报错了

silly-episode commented 1 year ago

我遇到的问题是这2个依赖和minio的okhttp版本冲突。取高版本,短信就用不了,取低版本,minio就用不了。所以就用了maven-shade-plugin插件将短信的依赖打包成jar包,在打包的过程中,使用插件为okhttp和okio多加一层目录。再将这个jar包引入项目中使用springboot内置的tomcat就启动项目就可以了