本文主要是介绍安卓开发-Didn't find class XX.calss on path: DexPathList 错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天遇到了一个找不到类的错误,花了半天时间终于搞定了。解决的办法让我很无语,也让我觉得AndroidStudio更恶心了。
先来看错误的日志:
04-18 10:02:27.570 24923-24923/com.eastsoft.android.esbic E/CrashReport: android.view.InflateException: Binary XML file line #62: Error inflating class com.example.administrator.demo.city.CityPicker at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at android.view.LayoutInflater.inflate(LayoutInflater.java:353) at com.eastsoft.android.esbic.fragment.MainFragment$1.onClick(MainFragment.java:67) at android.view.View.performClick(View.java:4438) at android.view.View$PerformClick.run(View.java:18422) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.administrator.demo.city.CityPicker" on path: DexPathList[[zip file "/data/app/com.eastsoft.android.esbic-2.apk", zip file "/data/data/com.eastsoft.android.esbic/code_cache/secondary-dexes/com.eastsoft.android.esbic-2.apk.classes2.zip"],nativeLibraryDirectories=[/data/app-lib/com.eastsoft.android.esbic-2, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at android.view.LayoutInflater.createView(LayoutInflater.java:559) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at android.view.LayoutInflater.inflate(LayoutInflater.java:353) at com.eastsoft.android.esbic.fragment.MainFragment$1.onClick(MainFragment.java:67) at android.view.View.performClick(View.java:4438) at android.view.View$PerformClick.run(View.java:18422) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method)
出错的原因:
这里一定要交待一下出错的原因,因为我不知道其他人出现这个错误的原因是否和我相同,如果不同的话不知道同样的解决办法有没有用。
1、使用了别人的代码,里边包含了自定义的View,将xml中的包名修改成自己的(修改之前编译过一次,当然是报错的)。
排查:
先是在网上找,找来找去大概说的都是v4库的版本不一样,照着这个方法操作了之后却不好使。是因为方法过时了吗?还是说引起这个错误的原因有很多,但是错误日志都一个尿性?
找来找去找不到办法,只好自己排查。
一、首先我们仔细看错误日志,这里有几个关键:
1、Didn't find class ,说明没有找到类文件,但是我们的类明明在啊
2、on path: DexPathList,说明是在这个名为“DexPathList”里找不到我们的类
所以我们要搞清楚DexPathList是个什么玩意。然而我找了半天没找到,只好在项目里试着搜索相关的东西。
二、找到项目里的关键文件
项目里到底哪里对这些文件进行了索引呢?因为我出错的原因是对目录的名字进行了修改,所以我想到的是去搜索原先项目的名字。搜出来真的好多啊。
不过我们在搜出来的东西的最下面,可以找到这么一个东西:
这里有个dex项,很像是它哦,看看它是个什么东西。仔细看这东西的目录结构:
从目录我们可以看出来这个东西是在项目目录的app/build/里面。既然是build的,那我们把这玩意删了会怎么样呢?试试:
编译后发现上面的LaunchActivity可以找到了,但是又出现一个DataManager找不到了。什么情况?
三、两个build,解决问题
Android的项目目录里是有两个build文件夹的,一个是:项目目录/app/build,另一个是:项目目录/build。如果把这俩build同时删除呢?
事实证明好使了,所以解决方法就是把两个build都删掉,然后运行。同时也说明在提交代码的时候两个build是不应该提交的。
再遇到类似的问题,不妨这么试试
相关文章:
这篇关于安卓开发-Didn't find class XX.calss on path: DexPathList 错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!