[问题] URLClassLoader 释放 .jar档 已解决

楼主: libertyleave (SSLin)   2018-03-26 10:51:48
环境 win7 版本: jdk1.2
写了一段 function 加载 .jar 档执行 然后希望 function 结束后删除 .jar 档
但是不知道为何 .jar档无法被删除
code 大致如下
URL url = new URL("file:/C:/java/A.jar");
URLClassLoader ul = new URLClassLoader(new URL[] { url });
Class c = ul.loadClass(name);
Method m = c.getMethod("main", new Class[] { args.getClass() });
m.setAccessible(true);
int mods = m.getModifiers();
if ( !Modifier.isStatic(mods) || !Modifier.isPublic(mods))
{
throw new NoSuchMethodException("main");
}
try
{
String result = m.invoke(null, new Object[] { args }).toString();
if(result.indexOf("0")!=-1)
System.out.println("Close");
File f=new File("C:/java/A.jar");
if(f.exists()){
System.out.println("Delete Old jar");
f.delete();
}
}
catch (Exception e)
{
System.out.println("Ex: "+e.getMessage());
}
delete 部分也没跳 exception, 但是 A.jar还在 没有被删除
手动删除的话 windows 会跳出讯息说正被 java 使用 无法被删除
google 之后找不太到解法 有看到说可以呼叫 URLClassLoader.close()
但是 java 1.2 没有
不知道如何解决 请问版上的各位大大有好的办法吗?
作者: NullLife (废材大叔有点累)   2018-03-27 09:00:00
一定要1.2这么悲剧?
楼主: libertyleave (SSLin)   2018-03-27 09:56:00
就是这么悲剧

Links booklink

Contact Us: admin [ a t ] ucptt.com