java - 由应用程序启动方法中的java.lang.runtimeException异常引起

标签 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

最佳答案

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

在这种情况下,图像最好包含在 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 条目。

关于java - 由应用程序启动方法中的java.lang.runtimeException异常引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40934130/

相关文章:

java - 新自定义控件上的 ClassNotFoundException - JavaFx

java - 自定义对象从FX拖放到Swing

java - 使用 JavaFX 中的按钮自动缩放按钮的文本

java - JavaFX 中的快速计数计时器

java - 更改 JTable 中单元格的颜色

java运行时间不显示

java - 如何使用curl使用2个参数进行POST?休息。 java

Java Sockets - 接收空白缓冲区

java - Android studio 2.2.0-rc1 gradle插件报错

css - 使用 CSS 在 GridPane 中居中子项