1

我有一个名为 Etc 的文件夹,其中有一个我想在同一文件夹中的另一个文件 Example.java 中使用的图像。所以我有 Etc\image.png 和 Etc\Example.java。我尝试使用“Etc/image.png”作为图像路径,但没有奏效。我该怎么办?

另外,假设文件在不同的包中,我该怎么做?

作为记录,我的主要 .java 类位于名为 Main 的包中。

编辑:

我用这个:

ClassLoader.getSystemClassLoader().getResource("Etc\image.png");

4

3 回答 3

2

您可以使用Class.getResource(),它使用类加载器来获取资源的 URL。例如:

import java.net.URL;
import javax.swing.ImageIcon;

public class Example {

    public ImageIcon getImage() {
        URL url = Example.class.getResource( "image.png" );
        if( url != null ) {
            return new ImageIcon( url );
        }
        return null; // TODO: Better error handling
    }

}

重要的部分是Example.class.getResource( "image.png" )——图像路径是相对于命名类指定的;在这种情况下,它与类文件位于同一目录中。您也可以在任何其他类中使用此行,保持对的引用Example.class不变。

于 2009-05-04T00:29:44.133 回答
0

第一件事。

Etc 是一个包吗?换句话说,在您的示例文件的顶部,您是否有一个

包等;

???

通常包名称是小写的,这就是我问的原因。

其次,虽然您可以使用相对路径来访问资源,但我建议始终使用绝对路径。

所以

URL url = Example.class.getResource("/Etc/image.png");

如果 Etc 是一个包,否则

URL url = Example.class.getResource("/image.png");

如果不是。

于 2009-05-04T00:35:00.893 回答
0

为此,您必须拥有 Etc 在类路径中的目录。如果它在罐子里,我不记得是否 . 作为类路径工作,如果不是,则将 Etc 添加到类路径中,并在没有类路径的情况下引用图像,或者将 Etc 放在子目录中。并将该子目录放在类路径中。

于 2009-05-04T01:32:30.693 回答