On Monday 22 December 2008 10:17, j16sdiz at freenetproject.org wrote: > 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
Is it safe to close it when the only reason we want to close it is it's not unloading properly? > > 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:dr at ina-germany.de">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(); > + } > } -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 827 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20090110/b8ce3c00/attachment.pgp>