| Relates :   | |
| Relates :   | |
| Relates :   | 
To reproduce the problem, on a Windows machine, create a test.jar, and run the following test case in jdb.  Stop at the first println, "test.jar" is now locked and cannot be deleted.
Note that the test is only trying to get a non-existant resource.  Note also that this is only a problem for the Windows platform.
This bug breaks an important functionality in AppServer, because it makes undeployment of a web applications impossible (in Windows), because jar files in it cannot be deleted.  See bug 5004315.  There does not seems to be any workarounds.
% cat Test.java
import java.io.*;
import java.net.*;
class Test {
    public static void main(String args[]) {
        try {
            File jarf = (new File("test.jar")).getCanonicalFile();
            URL urls[] = { jarf.toURL() };
            URLClassLoader loader =
                new URLClassLoader(urls, Test.class.getClassLoader());
            InputStream is = loader.getResourceAsStream("BadName");
            System.out.println("stream is " + is);
        } catch (Exception ex) {
            System.out.println("Error: " + ex);
        }
    }
}
###@###.### 2004-04-30
| 
 |