无法加载图片

时间:2013-12-02 07:11:32

标签: java image embedded-resource

我一直在尝试加载位于我的images文件夹中的image.png文件:

在eclipse中,我在我的src文件夹中创建了一个名为images的文件夹并将图像放在那里,所以它应该是我的类路径的一部分。

然而,当我尝试使用此图像时,它不起作用:

我试过这些:

Image image; 
String craft = "myApp/src/images/image.png";
ImageIcon ii = new ImageIcon(craft); 
        image = ii.getImage();

Image image; 
String craft = "myApp/src/images/image.png"; 
ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));
        image = ii.getImage();

String craft的各种变体:

"images/image.png", "/images/image.png", "/myApp/src/images/image.png"

3 个答案:

答案 0 :(得分:2)

如果您有以下图片:

src/images/foo.png

并使用此代码:

ImageIcon ii = new ImageIcon("images/foo.png");
Image image = ii.getImage();
System.out.println(image != null);

输出将是:

true

...即Image不是null ... ...如果你的类路径是eclipse在创建项目时提供的默认构建路径(注意:应该与Netbeans等相同)。

如果您使用的是不同的构建脚本,无论是Ant还是Maven,您可能需要更改路径。如果它是一个Web应用程序,你肯定会。

附加说明

  • Here是Web应用程序资源路径上的一个很好的SO线程。
  • Here是典型的Maven文件夹布局 - 对您有用 如果您使用Maven作为构建/包脚本,则启动。

答案 1 :(得分:0)

每当您尝试在类路径中加载资源时,都需要指定正确的相对路径。如果你的类路径中的images文件夹与类的文件夹相同,那么你必须按如下方式加载它

String craft = "images/image.png"; 
ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));

或者如果你在classpath中的images文件夹中有所有文件,你也可以直接指定文件名

   String craft = "image.png"; 
    ImageIcon ii = new ImageIcon(craft);

所以,我确信你提供的路径是错误的,这就是资源没有被加载的原因

答案 2 :(得分:0)

试试这个

String craft = "images/image.png"; 
ImageIcon ii = new ImageIcon(craft);

文件结构

ProjectRoot
          images
               imgage.png
          src
          bin