DexClassloader在Android5.0上运行错误

时间:2015-04-03 05:55:35

标签: dexclassloader

在Android5.0之前,我动态使用DexClassloader加载插件,代码如下:

DexClassLoader localDexClassLoader = new DexClassLoader(pluginSrcJarDir,cont.getDir("dex", 0).getAbsolutePath(), null, ClassLoader.getSystemClassLoader().getParent());

Class<?> pluginClass = localDexClassLoader.loadClass(className);  //error here 

但在Android5.0上出现错误:

  

04-03 05:51:42.743:W /(1462):Zip:792个末尾的无关字节   中央目录04-03 05:51:42.749:W / System.err(1462):   java.lang.ClassNotFoundException:没找到类   &#34; com.garfield.item0.system.plugin01.AckGetIntroduce&#34;在路径上:   DexPathList [[zip文件   #&34; /data/data/com.garfield/cache/1428040302214.jar"],nativeLibraryDirectories = [/供应商/ lib中,   / system / lib]] 04-03 05:51:42.811:W / System.err(1462):抑制:   java.io.IOException:无法打开zip存档   &#39; /data/data/com.garfield/cache/1428040302214.jar' 04-03 05:51:42.820:   W / System.err(1462):at   dalvik.system.DexFile.openDexFileNative(Native Method)04-03   05:51:42.820:W / System.err(1462):at   dalvik.system.DexFile.openDexFile(DexFile.java:295)04-03   05:51:42.821:W / System.err(1462):at   dalvik.system.DexFile。(DexFile.java:111)04-03 05:51:42.821:   W / System.err(1462):at   dalvik.system.DexFile.loadDex(DexFile.java:151)04-03 05:51:42.821:   W / System.err(1462):at   dalvik.system.DexPathList.loadDexFile(DexPathList.java:265)

为什么?请帮帮我!在5.0之前就可以了。5.0上发生了什么事!

1 个答案:

答案 0 :(得分:0)

从Android 5.0开始,运行Android的JVMART,但不再是Dalvik。看看你的logcat跟踪:

dalvik.system.DexPathList.loadDexFile

您的代码仍尝试运行Dalvik件事。