Exception in thread "main" java.lang.IllegalArgumentException: input == null!问题,GameUtil类的解释
最近复习java基础的时候,做了一个小游戏,出现了一个错误,困扰了我很久!
其中就用到了GameUtil这么一个类代码如下:
package com.zhazhahui.game; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; public class GameUtil { // 工具类最好将构造器私有化。 private GameUtil() { } public static Image getImage(String path) { BufferedImage bi = null; try { URL u = GameUtil.class.getClassLoader().getResource(path); System.out.println(u); bi = ImageIO.read(u); } catch (IOException e) { e.printStackTrace(); } return bi; } }
值得注意的是其中 URL u = GameUtil.class.getClassLoader().getResource(path);这段代码是获得GameUtil类的编译文件目录下某文件的路径。其中.class.getClassLoader().getResource(“”)是得到类编译文件的路径,所以.getResource()中参数必须是在此路径下的某文件路径,否则就会报错!
在做这个小游戏的人群能力参差不齐,使用的编辑器也有所不同,一些有过web项目经验的朋友,习惯在web项目下来做这个小游戏,其项目的目录结构和普通java项目的目录结构是不同的,所以不能完全根据视频去用这个类。
解决办法:
在GameUtil中使用 URL u = GameUtil.class.getClassLoader().getResource(“”); System.out.println(u);
获得类.class文件的路径
然后将images文件夹放置在此路径下。将上面的代码还原就可以正常使用了。