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

InputStream无法读取可运行JAR中的图像

陆晓博
2023-03-14

我在为D写一个角色构建器

我正在使用InputStream将javafx Image构造加载到ImageView构造函数[new ImageView(new Image(getClass(). getResourceAsStream(...)))]中;当我加载一些. jpeg图像时,它可以工作,但当我对. png图像执行相同的过程时就不行了

我已经尝试了这里描述的许多关于StackOverflow的解决方案,但似乎没有一个太接近我的问题或对我有任何帮助:

  • 创建源文件夹并从中检索图像
  • 将图像文件移动到类包中
  • 阅读所有可能的文档

这段代码工作正常,基本上可以读取图像并将其作为一些按钮的背景

ImageView imv;
        for(int i = 1; i <= 8; i++) {
            imv = new ImageView(new Image(getClass().getResourceAsStream("/ButtonImages/" + i + ".jpeg")));
...

然后这段代码,应该加载所有的D

this.imv = new ImageView(new Image(getClass().getResourceAsStream("/RaceImages/" + displayname + ".png")));

这是我的项目结构的图像。

这就是我得到的:

C:\Users\*****\Desktop>java -jar Dnd.jar
Width: 1238.6666666666667       Height: 720.0
Exception in Application start method
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.lang.RuntimeException: Exception in Application start method
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Input stream must not be null
        at javafx.graphics/javafx.scene.image.Image.validateInputStream(Unknown Source)
        at javafx.graphics/javafx.scene.image.Image.<init>(Unknown Source)
        at dnd.userinterface.javafx.scene.CharactersPane.<init>(CharactersPane.java:55)
        at dnd.userinterface.javafx.scene.DndPane.bookPane(DndPane.java:199)
        at dnd.userinterface.javafx.scene.DndPane.initPane(DndPane.java:99)
        at dnd.userinterface.javafx.scene.DndPane.<init>(DndPane.java:70)
        at dnd.userinterface.javafx.application.DNDApplication.start(DNDApplication.java:52)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
        at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
        ... 1 more

这明确表示我在读取比赛图像时得到一个空的InputStream

共有2个答案

孙德宇
2023-03-14

如果您的图像位于src/img中/

华易安
2023-03-14

我在一次试水中发现了这个问题,我为没有早点这么做感到羞愧。

最终,唯一的错误是图片名称中的一个大写字母被Eclipse绕过,但在运行时导致NullPointerException。罐子

我认为这已经解决,无需进一步干预。

这张照片显示了这个问题

 类似资料:
  • 问题内容: 我已经编写了一个程序来加密Netbeans中的图像。从Netbeans运行时,该程序运行良好,但是当我将其构建为.jar文件时,即使我将图像文件与.jar文件放在同一文件夹中,它也无法读取图像。 //加密 //加载/写入图片 问题答案: 目前尚不清楚以下哪个触发您的错误。这个 将从当前目录读取,该目录不一定与您的jar文件所在的目录相同。 这个 将从类所在的jar文件中的目录中读取。请

  • 应用程序似乎工作得很好,但是当我想执行这个api的可运行jar时,它就不工作了。所以我用C:...\jr6\bin\java.exe-jar C:\user\olivier\desktop\appli.jar执行我的jar 然后第一个问题是关于两个罐子,我必须倒置,使他们工作。(2个xstream JAR) 现在,一个新的错误出现了。应用程序似乎无法加载文件名language.properties

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

  • 我试图从eclipse导出一个可运行的jar,但结果是: 这是舱单: 其中Operazioni和Negozio是my包,itext是外部库

  • 我已经创建了一个SpringBoot应用程序,并且我将Application.properties放置在jar文件的同一个文件夹中。这是文件的内容: 当我在jar文件夹外运行/bin/java-jar/opt/apl/org.web.exemplo-java-maven.1.0.0-90/org.web.exemplo-java-maven-1.0.0-90.jar时,它不读取applicatio

  • 问题内容: 我已经编写了一个程序来加密Netbeans中的图像。从Netbeans运行时,该程序运行良好,但是当我将其构建为.jar文件时 ,即使我将图像文件与.jar文件放在同一文件夹中,它也无法读取图像。 //encryption //loading/writing image 问题答案: 目前尚不清楚以下哪个触发您的错误。这个 将从当前目录读取,该目录不一定与您的jar文件所在的目录相同。