java - dalvik.system.PathClassLoader 无法转换为 java.net.URLClassLoader

标签 java android urlclassloader dynamic-class-loaders

Android - 将 jar 文件动态添加到 ClassLoader,例如:

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-core 中运行良好,但不适用于 android。 什么是解决方案? 谢谢,

最佳答案

URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();

ClassLoader.getSystemClassLoader()

PathClassLoader 作为 ClassLoader 返回,因此 (URLClassLoader) 将导致异常。

关于java - dalvik.system.PathClassLoader 无法转换为 java.net.URLClassLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31920245/

相关文章:

java - <my :foo> Tag Library supports namespace: http://java. sun.com/jsf/composite/mycomponents,但没有为名称定义标签:foo

java - 将框架设置为不可见时,为什么此代码会产生错误?

android - 从 Firebase Analytics 日志记录中排除测试设备

java - Tomcat下URLClassLoader慢

java - 带有 Optional 的 Null 安全方法链接

java - 将 MySQL 中的 CHAR(0) 映射到 Hibernate 中的 boolean 值

android - 为什么我的 xml 文件中有#text 节点?

android - CookieManager.getInstance().removeAllCookie();不会删除所有 cookie

java - 如何使用Java中的部署文件夹中的反射类加载来获取带有前缀包的子类?

java - 保护登录后的 Java 类