我在哪里存储图像,以便可执行的jar文件可以访问它们?

时间:2013-02-18 15:46:10

标签: java eclipse image executable-jar

我正在使用Eclipse制作我创建的游戏的可执行jar文件,但是当我创建jar并运行它时,游戏中的图像不再显示。我在哪里存储图像以便jar文件可以访问它们?

4 个答案:

答案 0 :(得分:8)

将它们放入jar中,然后使用Class.getResourceClass.getResourceAsStreamClassLoader.getResourceClassLoader.getResourceAsStream来访问它们。哪个最合适取决于你正在做什么,但你可能想要这样的东西:

Image image = new Image(Program.class.getResource("/images/foo.jpg"));

...其中Program.class是同一jar文件中的任何类。或者,如果您将图像存储在与类相同的文件夹中(当您部署时),您可以使用:

Image image = new Image(GameCharacter.class.getResource("knight.jpg"));

这是相对资源名称。 (相对于有问题的班级。)

答案 1 :(得分:0)

为什么不能将它们嵌入到jar文件中?

更新:我在其中一项作业中的表现如下: 将图像嵌入到jar文件中,并且:

URL url = getClass().getResource("/banana.jpg");
if (url == null)
{
    // Invalid image path above
}
else
{
    // path is OK
    Image image = Toolkit.getDefaultToolkit().getImage(url);
}

答案 2 :(得分:0)

import java.net.URL; 

URL imageURL = getClass().getResource("/Icon.jpg");
Image img = tk.getImage(imageURL);
this.frame.setIconImage(img);

答案 3 :(得分:0)

我的文件结构是:

./ - the root of your program
|__ *.jar
|__ path-next-to-jar/img.jpg

代码:

String imgFile = "/path-next-to-jar/img.jpg";
InputStream stream = ThisClassName.class.getClass().getResourceAsStream(imgFile);
BufferedImage image = ImageIO.read(stream);

ThisClassName替换为您自己的所有设置!