【问题标题】:Images not loaded when exporting to runnable jar导出到可运行 jar 时未加载图像
【发布时间】:2015-01-16 16:16:01
【问题描述】:

我有一个用 java 编写的蛇游戏,但是当我将项目导出为 Runnable Jar 时,图像不会加载。他们在日食中工作正常。有什么问题?

我的 loadImages 方法如下所示:

private void loadImages() { 
    ImageIcon snakeBlockIcon = new ImageIcon("snake/images/snakeBody20px.png");
    snakeBlockImage = snakeBlockIcon.getImage();
    snakeBlockImage = snakeBlockImage.getScaledInstance(DOT_SIZE, DOT_SIZE, Image.SCALE_DEFAULT);
...

我的项目结构如下:

(SourceFolder)Projects > (source package) snake > (package) images

(SourceFolder)Projects >(源包)snake >(包)snake > .java 文件

谢谢!

编辑:获得足够的代表来发布图片

【问题讨论】:

标签: java eclipse image export


【解决方案1】:

在 jar 中,您需要使用以下代码将文件作为资源访问(类似 .txt .WAV):

ImageIcon ic = new ImageIcon(getClass().getResource("/machetelife.jpg"));

不知道是不是eclipse打包不一样。。我一般都是用cmd打包jar文件的。

【讨论】:

  • 仅供参考;与 machetelife.jpg 位于同一目录中的 jar 文件应该能够正常访问它,而无需将其作为资源访问;虽然它会在某种程度上破坏罐子的用途。
  • 这工作,终于......但只是在导出时。在 Eclipse 中,我得到 NullPointerException。有什么办法可以让它在两个地方都使用相同的代码?
  • 是的,我会创建一个“/machetelife.jpg”的文件对象,File file = new File("machetelife.jpg"); if(file.exists()) { //通过文件对象访问 jpg } else { //访问 jpg 作为资源 }
【解决方案2】:

Eclipse 不会在 jar 中包含除代码之外的任何其他内容,因此您必须手动添加需要的文件或修改 Eclipse 生成 jar 的方式。

通过首先从“生成可运行 jar”屏幕导出 ant 构建文件,然后编辑它以包含您的文件,可以轻松完成第二个选项。

要修改它,找到jar任务,它应该是目标元素内的第一个元素,其名称属性为“build_run_jar”(<target name="build_run_jar">),并在其中添加以下元素:

<fileset dir="path/to/your/files"/>

将路径替换为包含文件的文件夹的相对或绝对路径。

如果您想包含目录中的特定文件,您可以显式包含它们(请注意,这样只会包含您指定的文件):

<fileset dir="your/path"/>
    <include name="filename"/>
</fileset>

更多信息可以阅读Ant manual about the Jar task

【讨论】:

  • 那么在 标签之间?即:
  • 在jar标签里面,这样在构建jar的时候就会运行
猜你喜欢
  • 2013-08-25
  • 2021-07-20
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 2013-10-24
  • 2011-12-19
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多