package com;import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.Driver;
import java.util.Properties;public class Test {
public static void main(String[] args) {
try {
URL[] urls = new URL[] { new URL(
"file:F:/runtime-EclipseApplication/test/lib/mysql-connector-java-5.0.3-bin.jar") };
URLClassLoader classLoader = new URLClassLoader(urls);
Class<?> c = classLoader.loadClass("com.mysql.jdbc.Driver");
Driver d = (Driver) c.newInstance();
Properties p = new Properties();
p.put("user", "root");
p.put("password", "sa");
Connection conn = d.connect("jdbc:mysql://localhost:3306/casp", p); conn.close();
Thread.sleep(10000);

} catch (Exception e) {
e.printStackTrace();
}
}
}在线程睡眠期间,无法删掉lib目录

解决方案 »

  1.   

    这个不一定的,不要依赖jar能不能被删掉做逻辑处理。你是研究OSGi一类的模块吗?
      

  2.   

    我的问题是用了URLClassLoader加载类,在程序未结束删不掉那个jar包。
    我是做eclipse插件开发的,编写了一个插件,它使用了URLClassLoader加工程(不是插件工程)里的jar后,删不掉。
    关闭eclipse,在删,就行了。
      

  3.   

    你一定是在windows平台上出现的这种问题在linux下试试,应该不会有这问题这跟操作系统管理文件的方式有关
      

  4.   

    lib下的资源已经被打开了,在
    对象引用的情况是删除不掉的。
    除非你把urls 数组的相应对象引用
    置为null。等待垃圾回收
      

  5.   

    能不能写程序释放掉占用jar包的资源。