欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AndroidStudio  "java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/...."异常的解决

程序员文章站 2022-07-12 22:19:43
...

开发环境:

AndroidStudio 3.1.3

事情的经过: 

由于工作需要,将一直以Eclipse维护的代码移植到Android Studio中,为与H5交叉编译做准备,将代码移植过去后,修改掉N多错误后,终于编译成功了,偶长舒了一口气,以为终于结束了,没成想好事多磨,在测试的过程中,发现进入某个页面后,整个程序就崩溃了,没有明显的红色异常。仔细阅读log后,返现有几行蓝色的System.err级别的异常信息,具体如下:

 "java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/..../RecyclerView"

没有头绪,因为这些代码在Eclipse时,是久经考验的,而且在AS上也编译通过了-_-|||

于是,我去网上一阵搜罗,有朋友提醒说,可能是在开发的过程中引入多个第三方库,而在调用的时候 ,出现了不统一的问题,所以才会如此。 

恩,听起来好像很有道理,我根据网友的提示,进行了检查。

检查发现,我两个Moudle的模块Gradle文件中的“dependencies”部分确实不一样,一个使用的是“recyclerview-v7:28.0.0”,一个使用的是“recyclerview-v7:25.3.1”。

修改方案:

于是进行了如下修改:

1. 将每个Moudle的Gradle文件中的“dependencies”部分,全部统一成“recyclerview-v7:25.3.1”。

2.在每个Moudle的Gradle文件中,添加强制统一的配置:

    configurations.all {
        resolutionStrategy {
            eachDependency { details ->
                // Force all of the primary support libraries to use the same version.
                if (details.requested.group == 'com.android.support') {
                    if (!requested.name.startsWith("multidex")) {
                        details.useVersion '25.3.1'
                    }
                }
            }
        }
    }

其中一个Moudle的Gradle的截图如下:

AndroidStudio  "java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/...."异常的解决

最终结果:

修改后,进行同步,然后编译,编译成功。怀着忐忑的心情又跑了一遍,OK,好使了,看来确实是这个原因,感谢网友的慷慨分享,谢谢~~

唉,目前以我的段位,AS之与我,就像那样不熟的猫,忐忑,无奈,又心惊胆战,还需要继续努力啊,加油加油加油,啊。

你需要加么,嘿嘿~OVO~

 

参考内容:

再次感谢网友的慷慨分享,谢谢~~

https://www.jianshu.com/p/6dccb97a1199

https://www.cnblogs.com/changyiqiang/p/10267308.html