鉴于由多个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
答案 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;
}