我的JAR如何将自己打开为流?

时间:2010-10-12 13:25:45

标签: java

我正在尝试以流形式打开JAR,但无法理解从哪里获取此流...

JarInputStream s = new JarInputStream(/* what is here? */);

从哪里获得此流?我正在尝试打开目前正在负责的JAR。

2 个答案:

答案 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会做你想要的。