我似乎无法做到这一点......
我在Eclipse中有一个名为MyProject的Java项目。在它的根目录是文件夹bin,src和resources。在资源内部,我有一个名为myImage.gif
的图像。
在我的代码中,我想使用这个图像,我想让它工作,无论这是从Jar文件运行。我目前正在这样做
ImageIcon j = new ImageIcon(getClass().getResource("/resources/myImage.gif"));
但是当我通过Eclipse(而不是Jar)运行它时,它会吐出一个null。
这样做的正确方法是什么?
答案 0 :(得分:1)
如果您要告诉Eclipse将resources
视为源文件夹,那么您应该可以说
ImageIcon j = new ImageIcon(getClass().getResource("/myImage.gif"));
当您构建JAR时,您必须确保resources
目录的内容进入JAR文件的顶层,以便在JAR情况下使用相同的路径,即
META-INF
MANIFEST.MF
com
example
MyClass.class
myImage.gif
或者,可能是更常见的Java习惯用法,将图像文件放在与.java
文件相同的目录中(在这种情况下为src/com/example
),然后使用getResource
而不带领先斜线
new ImageIcon(getClass().getResource("myImage.gif"));
Class.getResource
解析了相对于相关类的包的相对路径。同样,当您构建JAR时,您需要在JAR中使用相同的结构,这次myImage.gif
下的com/example
。{/ p>
答案 1 :(得分:0)
将资源放入src ,Eclipse会将其复制到bin。
ImageIcon ii =
new ImageIcon(
ImageIO.read(
getClass().getClassLoader().getResourceAsStream(
"resources/myImage.gif" )));
没有/在路径之前。