我正在尝试以流形式打开JAR,但无法理解从哪里获取此流...
JarInputStream s = new JarInputStream(/* what is here? */);
从哪里获得此流?我正在尝试打开目前正在负责的JAR。
答案 0 :(得分:5)
从my answer到类似的问题:
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
URL jar = src.getLocation();
ZipInputStream zip = new ZipInputStream(jar.openStream());
/* Now examine the ZIP file entries to find those you care about. */
...
}
else {
/* Fail... */
}
答案 1 :(得分:2)
查找JAR中的类。例如:
Class clazz = SomeClass.class;
URL resource = clazz.getResource(clazz.getSimpleName()+".class");
JarFile jarFile = ((JarURLConnection)resource.openConnection()).getJarFile();
我知道你想要一个JarInputStream,但我敢打赌JarFile会做你想要的。