Image 从jar加载图像时发生Java错误

Image 从jar加载图像时发生Java错误,image,jar,Image,Jar,我知道有很多线程可以解决这个问题,但我还是很傻,无法解决这个问题 我正在通过以下方式加载我的图像: ImageIO.read(new File(this.getClass().getResource("../" + src).toString().substring(5))); 我在一些线程(德语)中读到,使用此方法,您可以从jar加载图像,但也可以从eclipse正确运行它。 但不管怎样,当我试图打开jar时,我得到了这个错误: Exception in thread "main" java

我知道有很多线程可以解决这个问题,但我还是很傻,无法解决这个问题

我正在通过以下方式加载我的图像:

ImageIO.read(new File(this.getClass().getResource("../" + src).toString().substring(5)));
我在一些线程(德语)中读到,使用此方法,您可以从jar加载图像,但也可以从eclipse正确运行它。 但不管怎样,当我试图打开jar时,我得到了这个错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NullPointerException
        at game.Sound.<init>(Sound.java:17)
        at game.GUI.<init>(GUI.java:34)
        at game.GUI.main(GUI.java:115)
        ... 5 more
线程“main”java.lang.reflect.InvocationTargetException中的异常 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:606) 位于org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 原因:java.lang.NullPointerException 在game.Sound.(Sound.java:17) 在game.GUI。(GUI.java:34) 在game.GUI.main(GUI.java:115) ... 还有5个 我正在控制台上运行这个命令:
java-jar CastleNightmare.jar

我做错了什么


谢谢大家!

要了解错误在哪里,请尝试将语句拆分为几个较小的语句。即,使用资源路径创建一个字符串,然后将其传递给文件构造函数,然后将其传递给ImageIO.read。问题是NullPointerException;在这种情况下,getResource()可能返回NULL?我认为
getResource()
不支持“相对”URL。还要注意,即使在使用文件名不区分大小写的操作系统(如Windows或MacOS)时,.jar中的文件名也是区分大小写的