我想从 jar文件到DexClassLoader
加载一个类:
public class AndroidClassLoader implements ClassLoader {
private Class class1;
@Override
public Class execute(File file, String packge) {
class1 = null;
try{
DexClassLoader loader = new DexClassLoader(file.toURI().toURL().toString(), FXActivity.getInstance().getDir("outdex", 0).getAbsolutePath(), null, FXActivity.getInstance().getClassLoader());
class1 = loader.loadClass(packge);
}catch(Exception e){
e.printStackTrace();
}
return class1;
}
}
运行上面的代码后,将抛出一个错误:
java.lang.ClassNotFoundException: Didn't find a class "com.life.Life"
of Path: DexPathList [[zip file "/storage/emulated/0/Life.jar"],
nativeLibraryDirectories=[/vendor/lib, /system/lib]]
jar文件的名称是 Life.jar ,这是其内容:
package com.life;
public class Life
{
public String getMessage()
{
return "Life is Beautiful!";
}
}
有关如何解决这个问题的想法吗?
答案 0 :(得分:0)
您的包裹价值应为“com.life.Life”
ie。,class1 = loader.loadClass(“com.life.Life”); 你可以尝试一下,让我知道它为你工作