protected Manifest findManifest(URL url) throws Exception { URLConnection conn = url.openConnection(); if (conn instanceof JarURLConnection) { JarURLConnection jarConn = (JarURLConnection)conn; return jarConn.getManifest(); } else { File parent = new File(url.toURI()); File child = new File(parent, JarFile.MANIFEST_NAME); if (child.exists()) { InputStream fis = new FileInputStream(child); try { return new Manifest(fis); } finally { close(fis); } } else { return null; } } }