Java 从下载的dex文件加载类时捕获ClassNotFound异常

Java 从下载的dex文件加载类时捕获ClassNotFound异常,java,android,classloader,dexclassloader,Java,Android,Classloader,Dexclassloader,我正在尝试在我的android应用程序中实现热修复机制。在谷歌搜索了一段时间后,以下是我所做的: 我生成了一个dynamic.jar文件,其中包含我要修补的类。(我正在使用eclipse和ADT) 使用dx--dex--output=patch.jar dynamic.jar,我成功地创建了一个包含classes.dex 在我的android代码中,我用DexClassLoader加载了这个类:新的DexClassLoader(patchFile.getAbsolutePath(),output

我正在尝试在我的android应用程序中实现热修复机制。在谷歌搜索了一段时间后,以下是我所做的:

  • 我生成了一个
    dynamic.jar
    文件,其中包含我要修补的类。(我正在使用eclipse和ADT)
  • 使用
    dx--dex--output=patch.jar dynamic.jar
    ,我成功地创建了一个包含
    classes.dex
  • 在我的android代码中,我用DexClassLoader加载了这个类:
    新的DexClassLoader(patchFile.getAbsolutePath(),outputFolder.getAbsolutePath(),null,getClassLoader().getParent()
    (注意我使用的是getParent())
  • 我已经验证了
    .dex
    文件在
    outputFolder
  • 我通过反射将类加载器更改为自定义类加载器。我已经验证了自定义类加载器是否正常工作
  • 当我尝试用
    CUSTOM\u LOADER.loadClass(className)
    加载类时,我得到了
    ClassNotFoundException
  • 所以我想知道怎么了?我用
    DexFile
    列出了
    .dex
    文件中的所有类,新类就在那里。甚至可以从Internet下载编译类的子集吗


    提前感谢。

    制作修补程序是绝对必要的?不管怎样,它不能加载哪个类--您的一个?您没有发布异常的详细信息。您是否验证了最终结果路径是否正确?JRE可能不想从您的JAR文件外加载类。