HashSet<String> closedFiles = new HashSet<>(); try { Object obj = getFieldObject( URLClassLoader.class, "ucp", this ); ArrayList<?> loaders = (ArrayList<?>) getFieldObject( obj.getClass(), "loaders", obj ); for ( Object ldr : loaders ) { try { JarFile file = (JarFile) getFieldObject( ldr.getClass(), "jar", ldr ); closedFiles.add( file.getName() ); file.close(); Vector<?> nativeLibArr = (Vector<?>) getFieldObject( ClassLoader.class, "nativeLibraries", this ); for ( Object lib : nativeLibArr ) { try { jarUrlConnClass = Class.forName( "sun.net.www.protocol.jar.JarURLConnection" ); Class<?> factory = getFieldObject( jarUrlConnClass, "factory", null ).getClass(); try { fCache = (HashMap<?, ?>) getFieldObject( factory, "fileCache", null ); } catch ( Exception e ) { uCache = (HashMap<?, ?>) getFieldObject( factory, "urlCache", null ); } catch ( Exception e ) {