【发布时间】:2009-10-12 18:38:59
【问题描述】:
Desktop.open(File f) 可以引用位于 JAR 中的文件吗?
我尝试使用ClassLoader.getResource(String s),将其转换为 URI,然后从中创建一个文件。但这会导致IllegalArgumentException: URI is not hierarchical。
URL url = ClassLoader.getSystemClassLoader().getResource(...);
System.out.println("url=" + url); // url is valid
Desktop.getDesktop().open(new File(url.toURI()));
一种可能性是the answer at JavaRanch,它是从 JAR 中的资源创建一个临时文件——不是很优雅。
这是在 Windows XP 上运行的。
【问题讨论】:
-
实际上创建一个临时文件是一个很好的解决方法。您可以为此创建一个“优雅”的库,因此您不必每次都编写代码。