前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动态加载class,卸载class

动态加载class,卸载class

作者头像
何白白
发布2019-06-28 16:27:14
3K0
发布2019-06-28 16:27:14
举报

动态加载class,卸载class

从指定位置的jar中加载class,和卸载class

第一种
代码语言:javascript
复制
        URL url = new File("/文件路径/entityMaker.jar").toURI().toURL();
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        URLClassLoader classLoader = new URLClassLoader(
                new URL[]{url},
                systemClassLoader
        );

        //加载class

        //不能使用Class.forName("com.hebaibai.entitymaker.util.SqlUtils")加载Class
        Class sqlUtils = classLoader.loadClass("com.hebaibai.entitymaker.util.SqlUtils");
        final Object instance = sqlUtils.newInstance();
        System.out.println(instance.getClass());

        //卸载类
        Method close = URLClassLoader.class.getDeclaredMethod("close");
        close.invoke(classLoader);
        
        //已经加载过得没法卸载
        sqlUtils = classLoader.loadClass("com.hebaibai.entitymaker.util.FileUtils");
        instance = sqlUtils.newInstance();
        System.out.println(instance.getClass());
第二种
代码语言:javascript
复制
        URL url = new File("/home/hjx/Desktop/entityMaker/entityMaker.jar").toURI().toURL();
        URLClassLoader classLoader = (URLClassLoader)ClassLoader.getSystemClassLoader();
        Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
        if (!addURL.isAccessible()) {
            addURL.setAccessible(true);
        }
        addURL.invoke(classLoader, url);
        addURL.setAccessible(addURL.isAccessible());
        //可以使用Class.forName("com.hebaibai.entitymaker.util.SqlUtils")加载Class
        Class<?> aClass = Class.forName("com.hebaibai.entitymaker.util.SqlUtils");
        Object instance = aClass.newInstance();
        System.out.println(instance.getClass());
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 动态加载class,卸载class
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档