Java / JavaFX,从项目内部和jar文件中读取文件

时间:2016-10-02 03:13:01

标签: java eclipse file javafx

我的项目文件夹中有一些想要阅读的图像和xml文件。例如,我的代码在src/app/MyClass.java内。我想要阅读的文件位于res/filename.pngres/filename.xml

因此,如果我想给我的项目一个图标,我会这样做(如果在Eclipse中运行则工作正常):

primaryStage.getIcons().add(new Image("file:res/icon.png"));

这个问题是,当我通过.jar文件运行它时,图像不会出现。与其他文件相同。它无法通过jar文件找到xml文件。

我试过了:

InputStream input = getClass().getResourceAsStream("res/icon.png");
primaryStage.getIcons().add(new Image(input));

但是Eclipse说inputnull。我究竟做错了什么?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

为什么会出现这种情况,有一些可能性。第一个是运行JAR而不是可执行Jar文件。程序无法显示图像的另一个可能原因是导出时没有单击提取所需库按钮,如下所示。如果这些都不是下面的案例评论。

Once you click finish you should be able to run the file with no issue.

尝试创建source folder名为resources(右键单击项目>新>源文件夹)并将所有内容放入其中。您现在可以执行getClass().getResourceAsStream("/file.ext"),但它不应该是null

如果在创建jar文件后出现任何其他错误(如上图所示),您可以通过命令行/终端运行它,它应该显示您可能遇到的任何错误:

java -jar jarfile.jar