java-尝试使用图像资源时出现NullPointerException

我用Java做游戏.它在Eclipse中完全可以正常工作.

我将其导出为可运行的JAR.双击它的图标时,它不会打开.因此,我尝试从命令行运行JAR.

我在尝试检索图像资源的代码行中收到NullPointerException错误(如我所说,它在Eclipse中运行良好).这是发生错误的代码行:

ball = new ImageIcon(this.getClass().getResource("sprites/ball.PNG"));

我不知道怎么了这是我的项目的结构:

有任何想法吗?我开始变得绝望了.

非常感谢你的帮助.

编辑:我尝试将/添加到sprites / ball.PNG的开头.没有帮助.还尝试将PNG更改为png.也没用.

在JAR内部检查图像是否在内部.我在Windows上.

这是堆栈跟踪:

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init><Unknown Source>
    at instPanel.<init><instPanel.java:17>
    at Main.<init><Main.java:23>
    at Main.main<Main.java:38>

编辑:我使用的事实(默认程序包)是否会出现问题?

解决方法:

如果您使用存档工具查看罐子内部,应该是这样.

JARROOT/*.class
JARROOT/sprites/ball.png

您可以尝试关注.

在Eclipse中,右键单击sprites文件夹.点击构建路径->用作源文件夹并再次打包项目.

您对资源的调用应该是
.this.getClass()的getResource( “/精灵/ ball.png”);要么
.this.getClass()的getResource( “/ ball.png”);
取决于Eclipse如何打包jar.

编辑:请阅读documentation.

如果传递给getResource(“”)的字符串以’/’开头,则它将被视为jar中的绝对路径.如果字符串以“ /”开头,则将其视为该类的相对路径.

这是带有注释的简单项目的图像.
文件夹“ icons”是资源文件夹.其内容将包装在广口瓶内.在这种情况下,JARROOT / other / zoom-out-icon.JPG和JARROOT / zoom-in-icon.jpg.

上一篇:java-使用File.listfiles()获取NullPointer异常


下一篇:android-java.lang.NullPointerException:在可扩展列表视图中显示数据库中的记录