由应用程序启动方法

时间:2016-12-02 14:09:10

标签: java javafx

我使用javaFX时不需要fxml文件。当我在IDE中运行我的应用程序时,它完美无缺。只有当我制作jar文件时它才行不通。有帮助吗?

error : no such file in res\img\menu_bg.png 

此文件与整个代码位于同一文件夹中

代码

public class InputStreamClass {
    private ImageView imgViewBG;
    public InputStreamClass() throws Exception {
        InputStream isBG = Files.newInputStream(Paths.get("res/img/menu_bg.png")); // res/img/menu_bg.png
        Image imgBG = new Image(isBG);
        isBG.close(); // kedze je to InputStream a pracujeme zo suborom tak vzdy ho treba zatvarat 
        this.imgViewBG = new ImageView(imgBG); // pridame img do ImageView
        this.imgViewBG.setFitWidth(1600); // sirka obrasku
        this.imgViewBG.setFitHeight(900); // vyska obrasku
    }
     public ImageView getImageViewBG() {
        return this.imgViewBG;
     }
}

enter image description here

2 个答案:

答案 0 :(得分:4)

我假设您不需要写入图像文件。

在这种情况下,图像最好包含在jar本身中。这可以防止路径问题。 Java尝试解析相对于工作目录的相对路径,工作目录通常不是代码文件夹。

通过将图像添加到jar文件本身,您可以使用Class实例获取资源,例如

// InputStream isBG = getClass().getResourceAsStream("/res/img/menu_bg.png");
// Image imgBG = new Image(isBG);

Image imgBG = new Image(getClass().getResource("/res/img/menu_bg.png").toExternalForm());

独立于工作目录。

这假设文件在jar文件中存储为/res/img/menu_bg.png条目。

答案 1 :(得分:1)

试试这个:在与jar相同的文件夹中,放入另一个文件夹名称res。在res文件夹内创建一个文件夹名称img。在img文件夹中,将实际图像放在上面的名称上。