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

JAR文件不拾取图像[重复]

石喜
2023-03-14

因此,我在eclipse中创建了一个java应用程序,并使用javafx,然后将其导出到一个可运行的jar文件中。但是,当我运行我的。jar文件时,它会给出找不到我的图像的错误。当我在Eclipse内运行时,它工作得非常好。

在UserPane中,我有一个函数将图像名作为“title”并返回ImageView:

InputStream is=null;
    
    try {
        is=new FileInputStream("./Images/"+title+".jpg");
    } catch (FileNotFoundException e) {
        
        e.printStackTrace();
    }
    
    
    Image img=new Image(is);
    ImageView imgview=new ImageView(); 
    
    imgview.setImage(img); 
    imgview.setFitHeight(300); 
    imgview.setFitWidth(300); 

    return imgview;

我尝试过一些解决方案,但它不会在Eclipse中运行。我需要它在eclipse和.jar中运行。我需要它设置在图像视图请。

共有1个答案

赏逸春
2023-03-14

FileInputStream之所以这样称呼,是因为它对文件进行操作。在java中,文件的意思完全是它所说的:文件是磁盘上某个位置的东西。

jar文件中的条目本身不是文件!

因此,当您编写新FileInputStream时?你输了比赛。那永远行不通。

URL url = UserPane.class.getResource("/Images/" + title + ".png");
try (InputStream in = UserPane.class.getResourceAsStream("/Images/" + title + ".png")) {
   // use 'in' here. It's `null` if the resource doesn't exist.
}

对于这个特定的用例,您正在寻找URL变体。您根本不需要InputStream。

 类似资料:
  • 问题内容: 当我在eclipse中导出可执行jar文件时,也需要使用res文件夹进行编译,当我使用不起作用的方法时。 当前读取的图像代码 代码无效 问题答案: 我现在已经解决了问题-这是有效的代码 fileName的值只是一个图像名称,例如BufferedImage img = loadImage(“ background.png”); 感谢大家的帮助。

  • 当我在eclipse中导出可执行jar文件时,我需要获取res文件夹进行编译,当我使用方法时,它不起作用。 当前读取图像代码 不起作用的代码

  • 我试过将图像定位到许多不同的地方,也试过不同的加载图像的方法,但没有一种方法奏效,我已经确保图像在导出的JAR文件中确实正确地出现。

  • 你好,我最近把我的JavaFX8项目改为Maven,除了加载JAR旁边的文件外,一切都很好。这在以前起作用,但现在不起作用了。 文件夹结构: 要加载的图标位于/target/Icons中,JAR文件位于/target中 我读取文件的代码如下所示: 它进入循环并查找文件,但当新图像(file.getAbsoltePath())被调用时,它会崩溃。 我尝试了toExternalForm()等的各种方法

  • 我有一个netbeansjavagui项目。它包含用于图像的java文件和文件夹。我的项目中最重要的一部分是通过单击按钮来显示图像,比如说单击“下一步”按钮。当我点击“下一步”按钮时,图像将从IMG文件夹中逐个显示。我将图像放在标签中,如下所示: 我运行了这个程序,到目前为止,它可以按照我的要求工作。 然后,我需要将项目创建到一个jar文件中。我使用Netbeans和这个来创建我的项目的JAR文件

  • 当我构建一个jar文件并运行它时,由于找不到图像图标,它显示一个空指针异常 这是我运行jar文件时得到的错误 但是当我在NetBeans中运行这个项目时,它运行良好 这是我列出罐子里所有文件时的输出