美文网首页
使用classloader动态加载jar包

使用classloader动态加载jar包

作者: 吐痰高手 | 来源:发表于2017-11-08 22:14 被阅读156次
public static void loadJar(String path){
    // 系统类库路径  
    File libPath = new File(path);  
      
    // 获取所有的.jar和.zip文件  
    File[] jarFiles = libPath.listFiles(new FilenameFilter() {  
        public boolean accept(File dir, String name) {  
            return name.endsWith(".jar") || name.endsWith(".zip");  
        }  
    });
      
    if (jarFiles != null) {  
        // 从URLClassLoader类中获取类所在文件夹的方法  
        // 对于jar文件,可以理解为一个存放class文件的文件夹  
        Method method = null;
        try {
            method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
        } catch (NoSuchMethodException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (SecurityException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }  
        boolean accessible = method.isAccessible();     // 获取方法的访问权限  
        try {  
            if (accessible == false) {  
                method.setAccessible(true);     // 设置方法的访问权限  
            }  
            // 获取系统类加载器  
            URLClassLoader classLoader = (URLClassLoader) Thread.currentThread().getContextClassLoader();;  
            for (File file : jarFiles) {
                try {  
                    URL url = file.toURI().toURL(); 
                    method.invoke(classLoader, url);    
                    System.out.println("读取jar文件成功"+file.getName());
                } catch (Exception e) {  
                    System.out.println("读取jar文件失败");
                }  
            }  
        } finally {  
            method.setAccessible(accessible);  
        }  
    }  
}

相关文章

  • 使用classloader动态加载jar包

  • 动态加载

    定义 加载so文件 加载dex/jar/apk文件 动态加载的基础就是classloader,一个app中至少需要...

  • ClassLoader深入学习记录

    ClassLoader是什么 ClassLoader是Java的类加载机制ClassLoader用于动态加载cla...

  • 类加载

    类加载 ClassLoader位于/jre/librt.jar/java/lang/ClassLoader.jav...

  • JVM之类加载机制

    Android类加载器 理解类加载 Eclipse使用第三方的插件其实就是动态加载Jar包里的Class字节码进行...

  • 一篇文章搞懂热修复类加载方案原理

    ClassLoader 类型 Java 中的 ClassLoader 可以加载 jar 文件和 Class文件(本...

  • ClassLoader

    Classloader 的类型 Java 中的 ClassLoader 可以加载 jar 文件和 Class 文件...

  • Android类加载器

    JVM之类加载机制 理解类加载 Eclipse使用第三方的插件其实就是动态加载Jar包里的Class字节码进行工作...

  • 动态加载jar包

    概述 前段时间在开发外设驱动程序时,涉及到了动态加载jar包的知识,于是开始学习了下。这里主要是完成客户端驱动ja...

  • Android基础

    android动态加载ClassLoader机制

网友评论

      本文标题:使用classloader动态加载jar包

      本文链接:https://www.haomeiwen.com/subject/girumxtx.html