Author: j16sdiz
Date: 2008-12-22 10:17:00 +0000 (Mon, 22 Dec 2008)
New Revision: 24728
Modified:
trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
trunk/freenet/src/freenet/support/JarClassLoader.java
Log:
force close the jar file when plugin unload
Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2008-12-22 09:52:06 UTC (rev 24727)
+++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2008-12-22 10:17:00 UTC (rev 24728)
@@ -4,7 +4,9 @@
import java.util.HashSet;
import freenet.l10n.L10n;
+import freenet.support.JarClassLoader;
import freenet.support.Logger;
+import freenet.support.io.Closer;
public class PluginInfoWrapper {
@@ -130,6 +132,13 @@
}
}
}
+
+ // Close the jar file, so we may delete / reload it
+ ClassLoader cl = plug.getClass().getClassLoader();
+ if (cl instanceof JarClassLoader) {
+ Closer.close((JarClassLoader) cl);
+ }
+
// always remove plugin
manager.removePlugin(this);
}
Modified: trunk/freenet/src/freenet/support/JarClassLoader.java
===================================================================
--- trunk/freenet/src/freenet/support/JarClassLoader.java 2008-12-22
09:52:06 UTC (rev 24727)
+++ trunk/freenet/src/freenet/support/JarClassLoader.java 2008-12-22
10:17:00 UTC (rev 24728)
@@ -19,6 +19,7 @@
package freenet.support;
import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -38,7 +39,7 @@
* @author <a href="mailto:[email protected]">David Roden</a>
* @version $Id$
*/
-public class JarClassLoader extends ClassLoader {
+public class JarClassLoader extends ClassLoader implements Closeable {
/** The temporary jar file. */
private JarFile tempJarFile;
@@ -166,4 +167,7 @@
return name.replace('.', '/') + ".class";
}
+ public void close() throws IOException {
+ tempJarFile.close();
+ }
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs