【发布时间】:2012-11-11 21:18:23
【问题描述】:
我有一个需要能够加载外部 Jar 文件的 Android 应用程序。我知道罐子的位置。
我一直在玩 Android API 提供的 PathClassLoader 类,但无济于事。我在 Activity 中使用以下代码:
String jarPath = "/sdcard/jars/testjar.jar";
PathClassLoader myClassLoader = new PathClassLoader(jarPath, ClassLoader.getSystemClassLoader());
try
{
Class<?> clazz = Class.forName("com.test.Class1", true, myClassLoader);
}
catch(Exception ex)
{
ex.printStackTrace();
}
在实例化 PathClassLoader 实例时,Dalvik 向 LogCat 打印一条消息,告诉我它找不到“classes.dex”文件。之后,“Class.forName”会抛出“ClassNotFoundException”。
我正在尝试找到一种无需“classes.dex”文件即可从外部 Jar 文件加载类的方法。 Jar 文件不包含这个文件,但是当其他应用程序在类路径中使用 Jar 构建时,Dalvik 可以非常愉快地加载类。
简单地说:如何在不需要“classes.dex”的情况下从外部 Jar 文件中加载类?
非常感谢, P
更新 Dalvik 记录的消息是
压缩包不错,但是里面没有classes.dex,同目录下也没有有效的.odex文件
【问题讨论】:
标签: android jar classloader