gpt4 book ai didi

JAR 中的 Java Desktop.open(File f) 引用文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:55 26 4
gpt4 key购买 nike

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 上运行。

最佳答案

.jar 文件中的"file"不是操作系统的文件。它们只是 .jar 文件的某些区域并且通常被压缩。它们不能作为单独的文件由操作系统寻址,因此不能以这种方式显示。

Java 本身有一种巧妙的方法来通过一些 URI 引用这些文件(正如您通过使用 getResource() 所意识到的那样),但这完全是特定于 Java 的。

如果您希望某些外部应用程序访问该文件,您有两种可能的解决方案:

  1. 提供一些标准化的方式来访问文件或
  2. 使应用程序能够处理打包在 .jar(或 .zip)文件中的文件。

通常 2 并不是一个真正的选择(除非另一个应用程序也是用 Java 编写的,在这种情况下它相当容易)。

选项 1 通常通过简单地写入一个临时文件并引用它来完成。或者,您可以启动一个小型 Web 服务器并通过某个 URL 提供文件。

关于JAR 中的 Java Desktop.open(File f) 引用文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com