我有一个名为Etc的文件夹,它有一个我想在同一文件夹Example.java中的另一个文件中使用的图像。所以我有Etc \ image.png和Etc \ Example.java。我尝试使用“Etc / image.png”作为图像路径,但这不起作用。我应该怎么做呢?
另外,假设文件在不同的包中,我该怎么做?
我的主要.java类位于名为Main的包中,用于记录。
修改
我用过这个:
ClassLoader.getSystemClassLoader()的getResource( “ETC \ image.png”);
答案 0 :(得分: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
的引用。
答案 1 :(得分:0)
首先要做的事情。
Etc是一个包吗?换句话说,在示例文件的顶部是否有
包等;
???
通常包名是小写的,这就是我问的原因。
其次,尽管您可以使用相对路径来访问资源,但我建议您始终使用绝对路径。
所以
网址url = Example.class.getResource(“/ etc / image.png”);
如果Etc是包,否则
网址url = Example.class.getResource(“/ image.png”);
如果不是。
答案 2 :(得分:0)
要使其正常工作,您必须拥有Etc在类路径中的目录。如果它在罐子里面,我不记得了。作为类路径工作,如果没有,将Etc添加到类路径,并引用没有类路径的图像,或将Etc放在子目录中。并将该子目录放在类路径中。