【问题标题】:java getResource() not workingjava getResource() 不工作
【发布时间】:2012-09-08 12:49:46
【问题描述】:

这快把我逼疯了。 我在具有以下结构的文件夹中有一个 NetBeans 项目:

MyProject
---- build
---- src
---- resources

在 src 中,我的代码在包中。我想做的是使用

getClass().getResource("/resources/new.png"); 

来自 com.my.package 包中的一个类,但它只是拒绝工作! “new.png”图像位于资源文件夹中。 我在这里错过了什么吗?

经过大量的玩耍并到处移动“new.png”图像以查看它何时会找到图像,它终于起作用了,但只有当我将图像放入构建文件夹时。 那么我需要做些什么来完成这项工作呢?

编辑:抱歉,方法参数中的字符串错误。现已更正

【问题讨论】:

  • 但是你在哪里告诉方法图像在资源文件夹中? (不是我的反对票)。请注意,资源是相对于类加载器的路径找到的。
  • resources 文件夹需要在类路径中结束;您是否将其列为源文件夹?它是否包含在 jar 的根级别?等等——如果不知道更多,就很难提供更多帮助。
  • 不太熟悉你在说什么。如何将某些内容列为源文件夹?问题是,即使我的图像不在文件夹中,而只是在我的项目的根目录中,它仍然无法使用 getClass().getResource("/test.png");
  • 你的项目的根可能不在类路径上,所以 .png 就类加载器而言是不可见的。

标签: java url embedded-resource


【解决方案1】:

我不熟悉 NetBeans,但问题可能是 resources 文件夹(或项目的根,就此而言)不在类路径中,这与 build 不同。

您需要配置 NetBeans 以将根文件夹或 resources 添加到类路径,并加载相对于那里的文件。

另请参阅此问题:Java - getClassLoader().getResource() driving me bonkers

【讨论】:

  • 确实是这个原因。我的印象是这是自动完成的,我过去从未发生过这种情况。现在我只需要弄清楚如何在 NetBeans 项目的类路径中添加我的根目录:D
【解决方案2】:

这很好用:

BufferedImage image = ImageIO.read(getClass().getClassLoader().getResourceAsStream("file_name"));

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2017-04-01
    • 2020-05-05
    • 2015-05-28
    • 2018-01-04
    相关资源
    最近更新 更多