我想在一个android 应用中动态加载SD 卡的jar文件获取某个类当调用loader.loadClass(className)时报Class can't load this type of class file 是jar 文件格式不正确还是其他什么原因。
其他代码我是这样写的
public void onClick(View v) {
Class jarClass = loadJar("sdcard/test.jar", "com.isoftston.imageui.ImageViewActivity");
//打印完整类名
System.out.println(jarClass.getSimpleName());
});
}
/**
* 动态加载JAR包中的类
*
* @param jarPath
* JAR包绝对路径
* @param className
* 类全名
* @return 类对象
*/
public static Class loadJar(String jarPath, String className) { Class tidyClazz = null;
try {
File file = new File(jarPath);
URL url = file.toURL();
URLClassLoader loader = URLClassLoader.newInstance(new URL[] { url });
tidyClazz = loader.loadClass(className);//报错,不能装载
}catch (Exception es) {
es.printStackTrace();
}
return tidyClazz;
}
其他代码我是这样写的
public void onClick(View v) {
Class jarClass = loadJar("sdcard/test.jar", "com.isoftston.imageui.ImageViewActivity");
//打印完整类名
System.out.println(jarClass.getSimpleName());
});
}
/**
* 动态加载JAR包中的类
*
* @param jarPath
* JAR包绝对路径
* @param className
* 类全名
* @return 类对象
*/
public static Class loadJar(String jarPath, String className) { Class tidyClazz = null;
try {
File file = new File(jarPath);
URL url = file.toURL();
URLClassLoader loader = URLClassLoader.newInstance(new URL[] { url });
tidyClazz = loader.loadClass(className);//报错,不能装载
}catch (Exception es) {
es.printStackTrace();
}
return tidyClazz;
}
这样你怎么可能在android里面加载成功啊,class文件要转换成dex文件格式才能被android执行,你这样android根本没办法加载运行你的jar文件内容的