public void testCopyRecursivelyFromJar() throws IOException {
        	
    	Debug.println("fileio", " my tmpdir = " + tmpDir);
    	File targetFoo = null, targetBar = null, 
    	newDestDir = null;
    	File jarFile = new File(tmpDir, "test.jar");
    	try {

    		JarOutputStream jf = 
    			new JarOutputStream(new FileOutputStream(jarFile));
    		ZipEntry ze = new ZipEntry("foo");
    		jf.putNextEntry(ze);
    		jf.write("Hello\n".getBytes());
    		ZipEntry zBar = new ZipEntry("bar");
    		jf.putNextEntry(zBar);
    		jf.write("Hello II\n".getBytes());
    		jf.close();

    		newDestDir = new File(tmpDir, "testTo");
    		newDestDir.mkdir();

    		targetFoo =  new File(newDestDir, "foo");
    		assertFalse(targetFoo.exists());
    		targetBar = new File(newDestDir, "bar");
    		assertFalse(targetBar.exists());
    		// Should be empty at this point
    		assertEquals(0, newDestDir.listFiles().length);

    		FileIO.copyRecursively(new JarFile(jarFile), 
    				new JarEntry("/"), newDestDir);

    		assertTrue(targetFoo.exists());
    		assertEquals(6, targetFoo.length());
    		assertTrue(targetBar.exists());
    		assertEquals(9, targetBar.length());
    		assertEquals(2, newDestDir.listFiles().length);
    	} finally {
    		if (jarFile != null) jarFile.delete();
    		if (targetFoo != null) targetFoo.delete();
    		if (targetBar != null) targetBar.delete();
    		// Must be after we delete the files in it.
    		if (newDestDir != null) newDestDir.delete();
    	}
    }