javafx应用程序在ide中运行得很好,但在使用maven构建时却不起作用

57hvy0tb  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(176)

我创建了两个imageview,一个来自fxml,另一个来自primarycontroller方法
从ide运行………1
但是当与maven一起构建和运行时….2
堆栈跟踪显示。。。。。

java.io.FileNotFoundException: src\main\resources\org\openjfx\icons\icons8-boombox-48.png (The system cannot find the path specified)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:212)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:154)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:109)
    at org.openjfx@1.0-SNAPSHOT/org.openjfx.PrimaryController.initialize(PrimaryController.java:19)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2655)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
    at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2517)
    at org.openjfx@1.0-SNAPSHOT/org.openjfx.App.start(App.java:16)

                                                      at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
    at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
    at java.base/java.lang.Thread.run(Thread.java:832)

找不到指定的文件。
所以,我提取了maven构建的zip文件,并检查是否没有一个图像存在。所以我的问题是,如果zip文件中没有图像,那么如何在fxml情况下加载图像,而不是从primarycontroller方法加载图像。
两个图像都显示在同一个文件中。

package org.openjfx;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    try {
        Image image = new Image(new FileInputStream("src/main/resources/org/openjfx/icons/icons8-boombox-48.png"));
        ImageView imageView = new ImageView(image);
        imageView.setFitWidth(100);
        imageView.setFitHeight(100);
        anchorPane.getChildren().add(imageView);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题