我很难在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有关在罐子外部使用资源的一般建议的任何想法?
答案 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应用程序后,此方法都将起作用。