当前位置: 首页 > 知识库问答 >
问题:

创建ImageViewer JavaFX时FileNotFound异常[重复]

刘和正
2023-03-14

我试图在JavaFX中打开一个映像,但遇到以下错误

Caused by: java.io.FileNotFoundException: calibre/Books/1.png (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)

我想我把我的目录弄错了。

这是我创建图像的方法。

public class Calibre extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        FileInputStream input = new FileInputStream("calibre/Books/1.png");
        Image image = new Image(input);
        ImageView imageView = new ImageView(image);

        HBox hbox =  new HBox(imageView);

        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
        root.setId("pane");
        Scene scene = new Scene(root);
        stage.setScene(scene);
        scene.getStylesheets().addAll(this.getClass().getResource("style.css").toExternalForm());
        Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
        //Set Stage Boundaries to visible bounds of the main screen
        stage.setX(primaryScreenBounds.getMinX());
        stage.setY(primaryScreenBounds.getMinY());
        stage.setWidth(primaryScreenBounds.getWidth());
        stage.setHeight(primaryScreenBounds.getHeight());
        stage.show();
    }

这是我的目录,你可以看到我的图像存储在里面。

非常感谢任何帮助。

共有1个答案

丁淇
2023-03-14

作为应用程序一部分的图像是资源,而不是文件。在构建应用程序时,它们将与类文件一起部署(例如,它们将被复制到build文件夹,或者包含在jar文件中,这取决于构建应用程序的方式)。

您构造的fileinputstream将相对于当前工作目录,您无法控制在运行时将是什么目录。

不使用流,而是使用image构造函数,该构造函数采用字符串形式的URL。这将相对于类路径解决:

    // FileInputStream input = new FileInputStream("calibre/Books/1.png");
    Image image = new Image("/calibre/Books/1.png");
    InputStream input = getClass().getResourceAsStream("/calibre/Books/1.png");
    Image image = new Image(input);
 类似资料:
  • 我有一个spark jar,我正试图将其提交给我的本地spark实例。jar是这样的包:按照maven结构,所有配置文件都存在于/resources文件夹中。 以下是例外情况: 在上述异常中,可以观察到的一件事是<代码> 在jar末尾标记:

  • 问题内容: (我是Java新手)…我想在HashMap中存储一些类字段值,然后将其写入文件(路径作为参数传递),然后还原HashMap并获取所需的信息。在名为Carte的构造函数中,我遇到一个异常,即找不到文件,无论如何它都位于正确的位置,保存的数据位于我的xml文件中。关于这一点的任何想法 发生了一个异常:java.io.FileNotFoundException:users / stefan

  • 问题内容: (我是Java新手)…我想在HashMap中存储一些类字段值,然后将其写入文件(路径作为参数传递),然后还原HashMap并获取所需的信息。在名为Carte的构造函数中,我遇到一个异常,即找不到文件,无论如何它都位于正确的位置,保存的数据位于我的xml文件中。关于这一点的任何想法 发生了一个异常:java.io.FileNotFoundException:users / stefan

  • 当面对选择抛出异常的类型时,您可以使用由别人编写的异常 - Java平台提供了许多可以使用的异常类 - 或者您可以编写自己的异常类。 如果您对任何以下问题回答“是”,您应该编写自己的异常类;否则,你可以使用别人的。 你需要一个Java平台中没有表示的异常类型吗? 如果用户能够区分你的异常与由其他供应商编写的类抛出的异常吗? 你的代码是否抛出不止一个相关的异常? 如果您使用他人的例外,用户是否可以访

  • 我正在学习Spring依赖注入。我有两种类型的代码。一个管用一个不管用...但是,他们都为制作教程的人工作。 注释代码给出了如下所示的错误。 Beans.xml 使用ApplicationContext时出现错误消息 线程“main”组织中出现异常。springframework。豆。工厂BeanDefinitionStoreException:IOException解析来自类路径资源[Beans

  • 我是一个初学者,当我试图使用JPG创建标签时遇到了一些问题。 显示线程“main”java.lang.NullPointerException中的 异常 在Pane.myImageIcon.(myImageIcon.java:11) 在pane.myimageicon.main(myimageicon.java:21)