2017-09-02 24 views
1

我有一个图像转换为缓冲的图像Java BufferedImage加载不工作|与该路径问题

public static BufferedImage imageLoader(String path) 

加载图像时,它返回一个方法..

return ImageIO.read(ImageLoader.class.getResource(path)); 

所以当我尝试加载和显示在图像我的画布我做..

testImage = ImageLoad.imageLoader("textures/sky.png"); 

确定,所以什么即时得到的是事实,这并不正确加载和IM试图找出为什么,当我加载这里是发生了什么......

Exception in thread "main" java.lang.IllegalArgumentException: 
    input==null! 
    at javax.imageio.ImageIO.read(ImageIO.java:1388) 
    at gfx.ImageManager.ImageLoad.imageLoader(ImageLoad.java:14) 
    at game.Thread.GameThread.init(GameThread.java:119) 
    at game.Thread.GameThread.run(GameThread.java:30) 
    at game.Thread.GameThread.startThread(GameThread.java:50) 
    at launcher.Launcher.main(Launcher.java:15) 

所以基本上没有正确加载,原因IM将所有这些信息,是因为我已经问了好几个人,他们不能弄明白。所以我想看看我是否做错了什么,或者如果有更简单的解决方案。这里是我的项目的src文件夹...

我使用IntelliJ,如果有帮助。

+0

图像存储在哪里?你能提供给你的问题而不是松散的线条的功能吗? – pedromss

+0

它存储在一个单独的包,但它仍然在同一根。 – MegaLunchBox

回答

1

ImageIO.read()

* @exception IllegalArgumentException if <code>input</code> is 
* <code>null</code>. 
* @exception IOException if an error occurs during reading. 
*/ 
public static BufferedImage read(File input) throws IOException { 
    if (input == null) { 
     throw new IllegalArgumentException("input == null!"); 
    } 

执行情况的片断应该确认要传递给该方法的值是null帮你调试的原因可能ImageLoader.class.getResource(path)可能/是null为共享代码上方。

由于它依赖于像pathImageLoader这样的其他几个变量的定义,所以我会将它留给你做一些调试并对其进行分类。

+0

建议他将图像放在项目根目录下,并用'ImageIO.read(文件输入)'作为'File'读取。阅读资源文件对于新手来说可能会很棘手。 –

+1

我想去尝试那个名字我不能类型的家伙 – MegaLunchBox

+0

@КлаусШварц这就是我把它留下的地方*我将它留在你身上做一些调试并将其整理出来* – nullpointer