解决`java.long.NoClassDefFoundError`

简介: 解决java.long.NoClassDefFoundError这个问题的原因多出现于Android版本兼容上Android5.0以下的手机,会出现java.

解决java.long.NoClassDefFoundError

这个问题的原因多出现于Android版本兼容上

Android5.0以下的手机,会出现java.long.NoClassDefFoundError

情况1: 当你的方法数超量时,采用

  1. 在Module的build.gradle的defaultConfig中加一行multiDexEnabled true

  2. 在dependencies中添加一行compile 'com.android.support:multidex:1.0.0'

  3. 如果有自定义的Application,那么在自定义的Application类中,继承MultiDexApplication

情况2: 如果上面都没有问题, 请检查你 报错的类里面, 有没有引用高版本API

比如,我在Android4.3上跑项目, 但是我类A implement 了一个Android7.0的接口,也会报这个错误.

因为 这个A 会被编译成.class 打包进.dex ,但是会被Android4.3的系统识别成 高版本API. 类A将不会运行.

解决方法:

在做版本兼容的时候, 类名或者主要方法上 尽量不要 混编高API的方法或者接口.

比如这样


img_9c439e4f9213eec29b70eee3babeebe5.png
image.png

尽量在一个方法中做版本兼容,比如这样.

 /**
     * 兼容5.0以下版本
     */
    private void setOnScrollListenerV5() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (scrollChangeListener == null) {
                scrollChangeListener = new WevScrollChangeListener();
            }
            mWebView.setOnScrollChangeListener(scrollChangeListener);
        }
    }
    /**
     * 兼容5.0以下版本
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    public class WevScrollChangeListener implements View.OnScrollChangeListener {

        @Override
        public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {


        }
    }

目录
相关文章
|
9月前
|
Java Spring
【Java异常】java.lang.ClassCastException: java.io.NotSerializableException cannot be cast to java.lang.S
【Java异常】java.lang.ClassCastException: java.io.NotSerializableException cannot be cast to java.lang.S
45 0
|
28天前
|
Java 数据库连接
手搓JDBC时报错 java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
手搓JDBC时报错 java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
35 1
|
9月前
|
安全 Java 编译器
解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题
解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题
463 0
|
14天前
|
安全 Java API
【Java】已解决java.lang.SecurityException异常
【Java】已解决java.lang.SecurityException异常
15 0
|
14天前
|
IDE Java 应用服务中间件
【Java】已解决java.lang.ClassNotFoundException异常
【Java】已解决java.lang.ClassNotFoundException异常
13 0
针对报错:java.lang.Integer cannot be cast to java.lang.Long..的解决办法
针对报错:java.lang.Integer cannot be cast to java.lang.Long..的解决办法
3662 0
针对报错:java.lang.Integer cannot be cast to java.lang.Long..的解决办法
|
9月前
|
Java Spring 容器
解决java.lang.StackOverflowError at java.base/java.lang.Double.doubleToRawLongBits(Native Method)问题~
解决java.lang.StackOverflowError at java.base/java.lang.Double.doubleToRawLongBits(Native Method)问题~
|
关系型数据库 MySQL 数据库
【已解决】java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long异常,亲测有效
【已解决】java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long异常的正确解决方法,亲测有效!!!
527 0
|
Java
Java|Java中的final
Java|Java中的final
66 0
|
关系型数据库 MySQL Java
IDEA中:出现java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
IDEA中:出现java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
129 0