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

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

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

修改

我用过这个:

ClassLoader.getSystemClassLoader()的getResource(" ETC \ image.png&QUOT);

有帮助吗?

解决方案

您可以使用 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 的引用。

其他提示

首先要做的事情。

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

包等;

???

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

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

所以

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

如果Etc是包,否则

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

如果不是。

要使其正常工作,您必须拥有Etc在类路径中的目录。如果它在罐子里面,我不记得了。作为类路径工作,如果没有,将Etc添加到类路径,并引用没有类路径的图像,或将Etc放在子目录中。并将该子目录放在类路径中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top