String () { URL url = Runner.class.getResource(Runner.class.getSimpleName() + ".class"); if (url == null) throw new IllegalArgumentException("Cannot resolve JAR file path"); if (!"jar".equals(url.getProtocol())) throw new IllegalArgumentException("Patch file is not a JAR file"); String path = url.getPath(); int start = path.indexOf("file:/"); int end = path.lastIndexOf("!/"); if (start == -1 || end == -1) throw new IllegalArgumentException("Unknown protocol: " + url); String jarFileUrl = path.substring(start, end); try { return new File(new URI(jarFileUrl)).getAbsolutePath(); } catch (URISyntaxException e) { throw new IllegalArgumentException(e); } }