IncompatibleClassChangeError:类'java.lang.VirtualMachineError'未实现接口'java.lang.CharSequence'

Pav*_*e37 2 java android kotlin rx-java retrofit

我的代码有奇怪的问题,我无法解释正在发生的任何事情。它在棉花糖上崩溃了,但在牛轧糖上却没有崩溃,这使得它更加奇怪。

我可以指向发生错误的行,但是错误本身并不清楚。我不知道是什么崩溃了,以及如何防止它崩溃。详细信息如下:

当我尝试拨打服务器时发生崩溃。要做到这一点,我使用的Retrofit旁边RxJava,我为此在科特林。这是我的代码:

fun login(username: String, password: String, callback: Login.OnLoginListener) {
    RestClient.getInstance().service
    .loginUser( //<- This line is crashing for no apparent reason
            Utils.RequestBodyParser.parseString(username),
            Utils.RequestBodyParser.parseString(password)
    )
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(
        { success ->
            (
            if (success.status)
                callback.onLoginSuccess()
            else
                callback.onLoginError()
            )
        },
        { error ->
            GenericErrorHandler.handleError(error, callback.retrieveContext())
        }
    )
}
Run Code Online (Sandbox Code Playgroud)

这是logcat的输出:

java.lang.IncompatibleClassChangeError: Class 'java.lang.VirtualMachineError' does not implement interface 'java.lang.CharSequence' in call to 'java.lang.String java.lang.CharSequence.toString()' (declaration of 'java.lang.Throwable' appears in /system/framework/core-libart.jar)
  at fi.hohtolabs.kuuratablet.network.WebController$Companion.login(WebController.kt:19)
  at fi.hohtolabs.kuuratablet.presenter.LoginPresenter.login(LoginPresenter.kt:31)
  at fi.hohtolabs.kuuratablet.dialog.LoginDialog.lambda$onResume$2$LoginDialog(LoginDialog.java:74)
  at fi.hohtolabs.kuuratablet.dialog.LoginDialog$$Lambda$2.onClick(Unknown Source)
  at android.view.View.performClick(View.java:5198)
  at android.view.View$PerformClick.run(View.java:21147)
  at android.os.Handler.handleCallback(Handler.java:739)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:148)
  at android.app.ActivityThread.main(ActivityThread.java:5417)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Run Code Online (Sandbox Code Playgroud)

有人对我应该做什么有任何建议吗?(我尝试清理,重建,重新启动和使缓存无效,删除了.gradle文件夹以及所有其他类似的东西,没有帮助)

Pav*_*e37 5

该问题仅在Marshmellow设备上发生,后来又有所不同。后来我得到了ArrayIndexOutOfBoundsException,终于发现了问题所在。

问题是我的库有超过64K的方法,并且因为Instant Run打开了库,所以没有multidex错误,整个应用程序编译也不好。

  • 我没有启用即时运行,并且仅在 android 6.0 上遇到相同的错误 (2认同)