题
我有一个名为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放在子目录中。并将该子目录放在类路径中。