【问题标题】:Java - Why that URL == nullJava - 为什么那个 URL == null
【发布时间】:2013-08-09 08:07:28
【问题描述】:

欢迎,我的代码有问题。应该保存资源路径的 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)

【问题讨论】:

  • pathRelativeToThis==null 这里
  • 你确定你的路径正确吗?
  • 这种情况下的一个常见错误是忘记了路径开头的/(即使路径是相对的!)。如果您的资源与您的类位于同一目录中,则路径应为/myResource.png
  • 关门了,我不知道我怎么会这么牛逼,并尝试了 2 天来用其他方法解决这些问题...谢谢。

标签: java url null initialization


【解决方案1】:

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

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

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

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

并且您将C:\temp\some-directory 添加到类路径中,您可以像这样使用Class.getResource(String) 获取some-file.txt 的URL:

URL someFileUrl = someClass.getResource("/some-other-directory/some-file.txt");

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 2014-07-27
    • 2023-03-16
    • 2012-05-31
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多