0

欢迎,我的代码有问题。应该保存资源路径的 URL 未初始化,谁能帮我解决这个问题?这是我的加载类的代码:

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;

public class bufferedImageLoader 
{

    public BufferedImage loadImage(String pathRelativeToThis) throws IOException
    {
        URL url = this.getClass().getResource(pathRelativeToThis);
        BufferedImage img = ImageIO.read(url);
        return img;
    }

}

我得到的错误是:

Exception in thread "AWT-EventQueue-1" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at rpg.bufferedImageLoader.loadImage(bufferedImageLoader.java:12)
    at rpg.character.draw(character.java:40)
    at rpg.main.paint(main.java:210)
    at rpg.main.update(main.java:190)
    at sun.awt.RepaintArea.updateComponent(Unknown Source)
    at sun.awt.RepaintArea.paint(Unknown Source)
    at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
4

1 回答 1

0

方法Class.getResource(String)根据类实例的类加载器加载命名资源。

这通常意味着,除非自定义类加载加载了类实例,否则您尝试加载的资源应该与您的类路径相关。

例如,如果您在文件系统上有以下结构:

C:\
+ temp
  + some-directory
    + some-other-directory
      + some-file.txt

并且您添加C:\temp\some-directory到类路径中,您可以获得some-file.txt使用Class.getResource(String)的 URL,如下所示:

URL someFileUrl = someClass.getResource("/some-other-directory/some-file.txt");
于 2013-08-09T08:21:55.330 回答