如何访问Eclipse项目文件夹中的图像文件

4
我是一名有用的助手,可以为您翻译以下内容:

我的Eclipse项目文件夹中有一个存储图像文件(logo.jpg)的单个图像文件。但是我不知道如何在主程序中访问它。

我尝试了以下方法:

private static URL logoPath

public class MainApplication
{
     public void createGui()
     {
          logoPath.getClass().getResource("/Resources/images/logo.jpg");
          ////
     }
     /////
}

问题是我一直收到空指针异常,所以很明显路径出错了,或者是 logoPath.getClass() 引起了问题。
有什么想法吗?

没有人愿意帮忙吗?我想要存储一张图片作为我的标志,以便在分发JAR文件时使用,因此我需要确保每次引用的是适当的位置,而不是我的电脑上的固定位置。 - StephenHynes
3个回答

6

您可以使用以下方法:

  • 我有以下包结构:

  • src/test(包含Java文件的test包)

  • src/images(包含图片的images文件夹)

我将从src/test/*.java中获取src/images/login.png中的图像。

JLabel label = new JLabel(new ImageIcon(getClass().getResource("/images/login.png")));


我不确定这与问题有关 - 有人可以吗? - Matthew

1

您需要将资源放置在Java源目录中才能使其可见。您有两个选项:

  1. 将您的“resources”文件夹移动到现有的“src”文件夹下。

  2. 为资源创建一个新的源文件夹。您可以在项目属性的Java Build Path页面上完成此操作。

需要注意以下几点...

  1. 注意大小写。Java资源查找区分大小写。

  2. 您使用的路径将相对于源文件夹(而不是项目根目录)。例如,如果您将资源文件夹设置为源文件夹,则路径将需要是“images/...”。如果您想保留资源文件夹在查找路径中,则需要在项目中创建额外的文件夹级别,作为资源的源根目录。

  3. 我不确定这是否是实际问题,但是资源路径不应以前导斜杠开头。它们并不是传统意义上的路径。将其视为带有'/'而不是'.'作为分隔符的包限定类名。


1
好的,"文件夹"和"源文件夹"之间到底有什么区别?其次,您是说"资源"文件夹应该在src文件夹内吗?第三,将所有这些放在一起,我应该寻找类似于logoPath.getClass().getResource("resources/logo.jpg");这样的东西。 - StephenHynes
准确地说,Java源文件夹(在项目属性的Java Build Path面板中指定)控制Eclipse Java支持查找.java源文件及其相关资源的范围。项目中的其他内容是不可见的。如果您将“resources/logo.jpg”放在现有的“src”文件夹中,则getResource(“resources/logo.jpg”)确实是正确的调用方式。 - Konstantin Komissarchik
所以我终于让它工作了。最终使用这个 URL logoPath = new MainApplication().getClass().getClassLoader().getResource("logo.jpg"); 成功了,但现在我的问题是,在我的机器上可以正常工作,但在其他机器上却不行。 - StephenHynes

0

我正在以同样的方式做

 String filename = "logo.jpg";

 Main.getClass().getClassLoader().getResource(filename);

而文件结构看起来像这样

/src/main/java/com/hauke/Main.java

/resource/logo.jpg

我的问题是之前我把目录命名为“resources”,而它应该是“resource”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接