okHttp3 java.lang.NoSuchMethodError:没有虚拟方法setCallWebSocket [英] okHttp3 java.lang.NoSuchMethodError: No virtual method setCallWebSocket

查看:587
本文介绍了okHttp3 java.lang.NoSuchMethodError:没有虚拟方法setCallWebSocket的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经从okhttp + retrofit更新到okhttp3 + retrofit2,但是我的应用没有启动此异常的原因

I've updated from okhttp + retrofit to okhttp3 + retrofit2 but my app doesn't start cause of this Exception

FATAL EXCEPTION: EventThread
Process: appli.speaky.com, PID: 14705
java.lang.NoSuchMethodError: No virtual method setCallWebSocket(Lokhttp3/Call;)V in class Lokhttp3/internal/Internal; or its super classes (declaration of 'okhttp3.internal.Internal' appears in /data/data/appli.example.com/files/instant-run/dex/slice-okhttp-3.6.0_29bb10e5f590229716bfa8daf196d09ea67f56a8-classes.dex)
    at okhttp3.ws.WebSocketCall.enqueue(WebSocketCall.java:108)
    at io.socket.engineio.client.transports.WebSocket.doOpen(WebSocket.java:84)
    at io.socket.engineio.client.Transport$1.run(Transport.java:82)
    at io.socket.thread.EventThread.exec(EventThread.java:55)
    at io.socket.engineio.client.Transport.open(Transport.java:77)
    at io.socket.engineio.client.Socket.probe(Socket.java:472)
    at io.socket.engineio.client.Socket.onOpen(Socket.java:485)
    at io.socket.engineio.client.Socket.onHandshake(Socket.java:526)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:499)
    at io.socket.engineio.client.Socket.access$1000(Socket.java:31)
    at io.socket.engineio.client.Socket$5.call(Socket.java:313)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:134)
    at io.socket.engineio.client.transports.Polling.access$700(Polling.java:17)
    at io.socket.engineio.client.transports.Polling$2.call(Polling.java:124)
    at io.socket.engineio.parser.Parser.decodePayload(Parser.java:251)
    at io.socket.engineio.client.transports.Polling._onData(Polling.java:134)
    at io.socket.engineio.client.transports.Polling.onData(Polling.java:106)
    at io.socket.engineio.client.transports.PollingXHR$5$1.run(PollingXHR.java:111)
    at io.socket.thread.EventThread$2.run(EventThread.java:80)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:761)

推荐答案

我也遇到了同样的问题.问题是我正在使用套接字0.8.0,我认为它与OKHTTP websocket冲突.

I also had the same issue. The issue was I am using socket 0.8.0 which I think has conflict with OKHTTP websocket implem.

升级到最新版本的socket.io

Upon upgrading to the latest version of socket.io

compile('io.socket:socket.io-client:0.8.3') {
    exclude group: 'org.json', module: 'json'
}

,并且还使用最新版本的OKHTTP (无需包含okhttp-ws)

and also using the latest version of OKHTTP (no need to include okhttp-ws)

compile "com.squareup.okhttp3:okhttp:3.7.0"
compile "com.squareup.okhttp3:logging-interceptor:3.7.0"

我的应用程序在第一次加载时没有崩溃,并且正在连接到套接字.拦截器也没有任何冲突,并且正在logcat上按预期方式进行记录.

my app is not crashing upon first load and it is connecting to sockets. Interceptor also has no conflict whatsoever and is logging as expected on logcat.

有了这个,您就不需要降级okHTTP的版本了,它过去一直是该版本的可行解决方案. :)

With this, there is no need to downgrade your version of okHTTP for which it has been the working solution in the past. :)

这篇关于okHttp3 java.lang.NoSuchMethodError:没有虚拟方法setCallWebSocket的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆