如何在Executables Jar

时间:2016-04-23 20:17:53

标签: javafx jar inputstream

我有问题,我的应用程序需要Images(jpgs),音频文件(mp3)和css文件。在IDE中,我可以使用字符串指向它们并使用它们。

我已经阅读了如何在jar中包含这些文件(使用Project - > Properties - > Sources - > Add Folder)。

比我读过的人可以使用" getRessource()"或" getRessourceAsStream"。

我尝试使用" getRessource()"加载我的jar中的图像......那些没有用的。所以我尝试了getRessourceAsStream。这工作,我能够从InputStream创建一个JavaFx.Image。代码:

InputStream bild = getClass().getResourceAsStream("/eins.jpg");
Image img = new Image(bild);

大多数答案来自问题"如何在jar中使用文件"说你应该总是使用InputStream。

现在我的问题是我使用" scene.getStylesheets()。add()"对于该方法,我需要一个String而不是一个InputStream。同样适用于" Media m = new Media()"。

有一种方法可以使用来自两个Ressources的InputStream(添加css和音频文件)或将InputStream转换为我可以用于这两种方法的东西。对我来说都很好。

本规范对我不起作用:

URL url = getClass().getResource("/style.css");
scene.getStylesheets().add(url.getFile());

那么在我的jar中使用包含css文件的方式是什么。如果可能的话,使用InputStream对我很好,我不需要使用" getRessource"。

感谢您的帮助!如果缺少一些信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

试试这个:

scene.getStylesheets().add(getClass().getResource("/style.css").toExternalForm());