当前位置: 首页 > 面试题库 >

使用ClassLoader.getResource()加载BufferedImage

司空玮
2023-03-14
问题内容

我正在尝试加载一个图像文件(gif),该图像文件本地存储在与Eclipse Java项目相同的目录中:

ref 是gif图像存储的相对路径。

public Sprite getSprite(String ref) {
      BufferedImage sourceImage = null;
      try {
        URL url = this.getClass().getClassLoader().getResource(ref);        
        if (url == null) {
        fail("Can't find ref: "+ref);
       }
       sourceImage = ImageIO.read(url);
       } catch (IOException e) {
        fail("Failed to load: "+ref);
       }
}

使用上述方法的客户端代码是:

public Entity(String ref,int x,int y) {
        this.sprite = ResourceManager.getSprite("sprites/alien.gif");
        this.x = x;
        this.y = y;
    }

在Eclipse工作区中,在我的项目目录中,我有一个文件夹sprites,其中存储了gif图像。但是客户端代码总是返回:Can't find ref: sprites/ship.gif

我在上面的方法中加载gif图片时做错了吗?在这种情况下,是否有更好的直接方法来执行文件查找?

非常感谢您的任何建议。


问题答案:

getResource()方法搜索您的 类路径 以查找文件,可能是 sprites 目录不在您的类路径中。

尝试打开项目属性-> Java Build Path,选择Libraries选项卡,然后单击Add Class Folder按钮,然后选择
sprites 的父目录。



 类似资料:
  • 我正在使用Spring MVC和Thymeleaf进行开发。 我正在尝试使用sec:authorize加载JavaScript。换句话说,我只希望在用户经过身份验证时加载这个脚本。下面是我试图开始工作的代码: 最后两个资源我试图使用sec:authorize加载,但它们似乎在每次加载页面时都能处理。这是使用SEC:Authorize的有效方法吗?如果不是,有什么办法可以做到这一点吗?

  • 问题内容: 这个问题困扰了我一段时间。我必须在我的Java应用程序中加载几个文件,到目前为止,我工作的唯一方式是这样的: 但这是丑陋和可怕的。有一阵子我以为我在做这个工作: 但这由于某种原因不再起作用(我必须做些更改并且没有注意到。它返回null。 我应该使用getResource()而不是getSystemResource()(如果这样),为什么getSystemResource()是静态的却不

  • 有没有办法使用使用自定义TTL加载地图条目? 用例:“我的映射”条目都有一个自定义的过期期限,此时该条目不再有效(TTL不仅用于限制内存映射的大小,而且TTL应用于每个条目,而不是映射配置)。我在最初将条目放入映射时设置了此TTL,过期时间将保留在我的基础持久映射数据存储中,但从数据库加载条目时无法重置此TTL。 地图加载器文档似乎表明这可能不可能: 加载的条目将被放置到分布式映射中,它们将保留在

  • 问题内容: 我使用以下方法将jQuery库附加到dom: 但是当我运行时: 控制台报告错误: 如何动态加载jQuery以及将其放入dom中使用它? 问题答案: 这里有一个工作的JSFiddle,上面有一个小例子,它可以确切地说明您正在寻找什么 这种动态加载JavaScript的方法存在一些问题。当涉及到非常基础的框架(如jQuery)时,您实际上可能想静态地加载它们,因为否则,您将必须编写一个完整

  • 问题内容: 我希望对我在Spring中涉及到属性文件的问题有所帮助。所以我的设置是这样的: opto-mapping.properties –该文件位于我的src文件夹中,其中包含针对我的优化资源的翻译,如下所示: 每次运行“优化”构建时,都会更新此属性文件。然后我用 将属性文件导入所需的jsp中。然后通过使用以下内容引用内容: 除了属性文件需要重新启动tomcat重启外,所有这些工作都很漂亮。我

  • 问题内容: 我想知道和之间有什么区别? 编辑:我特别想知道是否在文件/目录级别涉及任何缓存。如“目录列表是否在Class版本中缓存?” AFAIK以下基本上应该做同样的事情,但事实并非如此: 我在摆弄一些报告生成代码时发现了这一点,这些代码可以WEB-INF/classes/从该目录中的现有文件中创建一个新文件。使用Class中的方法时,可以使用找到部署getClass().getResource