如果jar需要外部文件,则Desktop.getDesktop()。open(file)不起作用

时间:2018-09-07 21:30:15

标签: java

我有一个jar文件file.jar,该文件需要一个在jar旁边的图片文件夹。该程序将加载图片并显示它们。

双击或java -jar file.jar都可以正常工作,但是如果我尝试用另一个java程序打开它

File file = new File("path/file.jar");
Desktop.getDesktop().open(file)

它没有加载图片。

那会是什么?

1 个答案:

答案 0 :(得分:2)

运行java -jar file.jar时,jar文件位于当前目录中,并且图片文件夹也可能位于中。

双击jar文件时,代码将使用包含文件夹作为当前目录运行。

当您“打开” path/file.jar时,当前目录显然有所不同,因为为什么还需要限定jar文件名。由于您在当前目录上进行编程以查找图片文件夹,因此该操作失败。

解决方案,按照我的推荐顺序(考虑到您对代码的了解很少):

  1. 将图片包含在jar文件中,然后使用getResourceAsStream访问它们。

  2. 将图片包含在另一个jar文件中,让您的主jar文件的清单文件在类路径中包含图片jar文件。

  3. 在尝试“打开”文件之前,请确保当前目录正确。