【发布时间】:2016-04-11 05:48:54
【问题描述】:
您好,我制作了两个程序:一个是关卡编辑器,另一个是马里奥克隆游戏。
我做了:项目结构-> 工件,我为这两个应用程序创建了一个 jar。
现在,如果我运行关卡编辑器的 jar,则没有任何问题。 如果我运行游戏的 jar,它不会启动并且我得到:
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1348)
at com.platform.game.window.BufferedImageLoader.loadImage(BufferedImageLoader.java:15)
at com.platform.selectlevel.LevelsFinder.<init>(LevelsFinder.java:60)
at com.platform.game.window.Menu.<init>(Menu.java:72)
at com.platform.game.window.Window.addMenu(Window.java:55)
at com.platform.game.window.Window.<init>(Window.java:31)
at com.platform.game.window.Game.main(Game.java:272)
如果我在编辑器中编译它运行良好,我该如何解决?有什么建议吗?
缓冲图像加载器:
public class BufferedImageLoader {
private BufferedImage image = null;
public BufferedImage loadImage(String path){
try {
image = ImageIO.read(getClass().getResourceAsStream(path));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return image;
}
}
仅当我从 jar 而不是从 IDE 运行游戏时才出现异常,只是想知道为什么?有人知道吗?
【问题讨论】:
-
加载图片的代码是什么?看起来由于某种原因无法找到/读取图像
-
不看一些代码就不可能知道出了什么问题,但我会尝试检查图像路径或启动应用程序所需的任何配置/参数。调试第 15 行的 BufferedImageLoader 类也是一个好主意,以了解哪个输入作为 null 发送到 ImageIO。
-
IllegalArgumentException不是一个检查异常(它扩展了RuntimeException),所以它编译的事实并不意味着它会工作。您将InputStream传递给ImageIO.read(),即null,这意味着您可能忘记初始化它。 -
事实是,如果我在编辑器中运行一切正常,如果我创建并运行 jar,我会遇到该错误,我会将 bufferedImageloader 代码放入问题中。
标签: java intellij-idea jar