android-将jar文件动态添加到类加载器,如:
String strJarfile = "/data/data/com.example.classloader/files/apps/Calc/SumAndSub.jar";
URLClassLoader sysloader = (URLClassLoader) ClassLoader
.getSystemClassLoader();
try
{
File f = new File(strJarfile);
URL u = f.toURI().toURL();
Class[] parameters = new Class[] { URL.class };
Method method = URLClassLoader.class.getDeclaredMethod("addURL",
parameters);
method.setAccessible(true);
method.invoke(sysloader, new Object[] { u });
}
catch (Exception e)
{
e.printStackTrace();
}
而且,错误:
Caused by: java.lang.ClassCastException: dalvik.system.PathClassLoader cannot be cast to java.net.URLClassLoader
这个代码在Java内核中工作得很好,但不是Android的。
什么是解决方案?
谢谢,
最佳答案
URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
ClassLoader.getSystemClassLoader()
将返回
PathClassLoader
作为ClassLoader
,因此(URLClassLoader)
将导致异常。