【发布时间】:2013-02-18 15:46:10
【问题描述】:
我正在使用 Eclipse 制作我创建的游戏的可执行 jar 文件,但是当我创建 jar 并运行它时,游戏中的图像不再显示。我在哪里存储图像以便 jar 文件可以访问它们?
【问题讨论】:
标签: java eclipse image executable-jar
我正在使用 Eclipse 制作我创建的游戏的可执行 jar 文件,但是当我创建 jar 并运行它时,游戏中的图像不再显示。我在哪里存储图像以便 jar 文件可以访问它们?
【问题讨论】:
标签: java eclipse image executable-jar
将它们放入罐子中,然后使用Class.getResource、Class.getResourceAsStream、ClassLoader.getResource 或ClassLoader.getResourceAsStream 访问它们。哪个最合适取决于您在做什么,但您可能想要这样的东西:
Image image = new Image(Program.class.getResource("/images/foo.jpg"));
... 其中Program.class 是同一 jar 文件中的 any 类。或者,如果您将图像存储在与类相同的文件夹中(在部署时),您可以使用:
Image image = new Image(GameCharacter.class.getResource("knight.jpg"));
这是一个相对资源名称。 (相对于相关类。)
【讨论】:
为什么不能将它们嵌入到 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);
}
【讨论】:
import java.net.URL;
URL imageURL = getClass().getResource("/Icon.jpg");
Image img = tk.getImage(imageURL);
this.frame.setIconImage(img);
【讨论】:
我的文件结构是:
./ - 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,一切就绪!
【讨论】: