zoukankan      html  css  js  c++  java
  • JAVA动态加载和卸载jar包

    JAVA动态加载jar包的代码如下:

    URLClassLoader urlClassLoader = null;
    public void load() {

    File file = new File("C:\Users\dengshengcai\Desktop\新建文件夹 (2)\analyse_plugins.jar");

    System.out.println(new File(".").getAbsolutePath());

    try {
    urlClassLoader = new URLClassLoader(new URL[]{file.toURI().toURL()});
    Class classStudentServiceImpl = urlClassLoader.loadClass("com.el.cardata.analyse.plugins.Test");
    Object o = classStudentServiceImpl.newInstance();
    IAnalyse iAnalyse = (IAnalyse) o;

    if (null != iAnalyse)
    iAnalyse.analyse(null);

    Thread.sleep(1000);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    卸载jar包的代码如下:
    public void unLoad() {

    if (null != urlClassLoader)
    ClassLoaderUtil.releaseLoader(urlClassLoader);

    }


    使用上述代码动态加载和卸载jar包,经过测试,发现一些比较特殊的情况,针对到我的测试,我谈谈对动态加载jar包的几种测试情况:
    1.在动态加载的jar包中包含静态变量的值,当unload之后重新load进来时已全部清空,即load之后完全是一个新环境;
    2.在动态加载的jar包中如果启动了新线程,且线程一直运行,在unload之后,线程并未结束,但是被加载的jar包文件(例子中的文件为:"C:\Users\dengshengcai\Desktop\新建文件夹 (2)\analyse_plugins.jar")却可以被删除,说明该jar包已经被jvm释放了。这种情况的具体原因不清楚,待以后去了解分析;



  • 相关阅读:
    Best Time to Buy and Sell Stock
    Remove Nth Node From End of List
    Unique Paths
    Swap Nodes in Pairs
    Convert Sorted Array to Binary Search Tree
    Populating Next Right Pointers in Each Node
    Maximum Subarray
    Climbing Stairs
    Unique Binary Search Trees
    Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/kxxx/p/6840097.html
Copyright © 2011-2022 走看看