列出webstarted应用程序jar中的所有文件

时间:2011-01-06 15:12:09

标签: java jar java-web-start

鉴于由多个jar组成的webstart应用程序,我如何列出这些jar中包含的文件? (在运行时)

提前致谢,

阿诺

修改

使用下面提到的方法(这与我到目前为止使用的方法非常相似)的问题在于,在调用webstart时,类路径会以某种方式发生变化。实际上,它不再引用您的罐子,而是引用deploy.jar

因此,如果您运行java -cp myjars test.ListMyEntries,它将正确打印您的jar内容。另一方面,通过webstart,您将获得deploy.jar的内容,因为这是在webstarted时定义类路径的方式。我没有在任何系统/部署属性中找到任何原始jar名称的痕迹。

输出样本:

Entries of jar file /usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/deploy.jar
META-INF/
META-INF/MANIFEST.MF
com/sun/deploy/
com/sun/deploy/ClientContainer.class
com/sun/deploy/util/
com/sun/deploy/util/Trace$TraceMsgQueueChecker.class

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

答案 2 :(得分:0)

答案 3 :(得分:0)

我就这样做了:

+------------+--------------+-------+------------+
| article_id | name         | price | associated |
+------------+--------------+-------+------------+
|          5 | article test | 54.00 |          1 | <
|          3 | za           |  8.90 |          1 | <
|          1 | Aez          |  NULL |          0 | <
|          2 | aze          |  NULL |          0 | <
|          3 | za           |  NULL |          0 | 
|          4 | azee         |  NULL |          0 | <
|          5 | article test |  NULL |          0 |  
|          6 | test 2       |  NULL |          0 | <
|          7 | Test 3       |  NULL |          0 | <
+------------+--------------+-------+------------+
public static List<String> listResourceFiles(ProtectionDomain protectionDomain, String endsWith) throws IOException
{
    List<String> resources = new ArrayList<>();

    URL jar = protectionDomain.getCodeSource().getLocation();
    ZipInputStream zip = new ZipInputStream(jar.openStream());

    while(true)
    {
        ZipEntry e = zip.getNextEntry();
        if(e == null) break;
        String name = e.getName();

        if(name.endsWith(endsWith)) resources.add(name);
    }

    return resources;
}