javafx访问jar外部的图像

时间:2018-12-20 21:37:05

标签: image javafx jar resources

我很难在jar之外访问图像源。 我正在为画布加载图像,当图像位于罐子内时这不是问题。

但是现在我想在jar之外创建一个包含所需图像的文件夹,因为客户端应稍后更改它们。

结构如下:

dir:
 -program.jar
 -images:
    -picture.png
 -saves:
    -config.cfg

我很困惑,因为我可以通过

加载配置
String path = "./saves/config.cfg";

但是当tryig通过这种方式访问​​图片时,我得到的网址无效

按照他人的建议进行跟踪似乎也没有效果:

File f = new File(this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
String path = f.getParent() + "images/picture.png"
Image image = new Image(path);

这次仍然是无效网址,但协议未知:c

在路径的开头放置"file:///" +不会成功,除非没有Exeption,但是也没有Image。

关于如何正确使用图像和maby有关在罐子外部使用资源的一般建议的任何想法?

1 个答案:

答案 0 :(得分:0)

您应该只可以为apache flink对象使用相对路径:

File

您的File imageFile = new File("images/picture.png") 将在基本目录中开始;创建program.jar对象时,这是您要传递给构造函数的路径的起点。因此,File将在“ images”子目录中查找pictures.png文件。

拥有文件后,您将要使用该文件的URI创建new File("images/picture.png")

Image

实际上创建了文件的完整绝对路径。

  

示例应用程序:

这是一个简单的示例,您可以尝试一下。您需要确保在输出文件夹(.jar文件所在的位置)中创建了Image image = new Image(imageFile.toURI().toString()); 文件夹,并在其中创建了合适的图像文件。

resources

无论在IDE中运行应用程序还是在构建JAR或JavaFX应用程序后,此方法都将起作用。