【问题标题】:How can I ensure that images are included in my .jar package?如何确保图像包含在我的 .jar 包中?
【发布时间】:2021-02-01 23:59:32
【问题描述】:

我刚刚完成了我的第一个正确的带有 GUI 的 java 程序,并在 netbeans 中设置了所有选项,以便项目创建一个 .jar 文件,该文件当前显示我的 Frame 并连接到数据库。 我遇到的问题是,当我运行程序时(我必须从终端运行它,因为单击 .jar 可能是问题的一部分?),我的图像都没有加载。 我尝试了以下方法;

  1. 进入项目库首选项,添加位于我的 P3Game 文件夹(项目的根目录)中的 /img 文件夹,但无济于事。
  2. 尝试直接将图像复制到生成的 /dist 文件夹,但由于它不是文件夹或库,因此我无法通过库首选项添加图像。
  3. 手动将 img 文件夹复制到 dist 中(编译后)并将文件路径设置为 dist/img/imgName.png 并且它工作,但是,每当我构建/编译项目时,dist 中的 img 文件夹会被完全擦除(只是内容)

任何帮助将不胜感激。

EDIT1:这就是我将图像添加到程序中的方式,这适用于 netbeans,但不适用于在其他地方运行程序。

public void setGrassIcon() throws IOException {
        this.grassIcon = new ImageIcon(ImageIO.read(new File("img/Grass.png")));
}

【问题讨论】:

  • 你在这个项目中使用的是什么构建系统?马文?摇篮?蚂蚁?还有什么?
  • 我正在使用一个 ANT 项目
  • 听起来你想要的是一个包含所有依赖项的 jar。只需谷歌搜索“胖罐”。如果我无论如何都要开始一个新项目,我更喜欢 gradle 而不是 ANT。但无论如何,这也可以通过 ANT 实现。例如。这里:stackoverflow.com/questions/1821803/…
  • 将我的所有代码复制到 maven/Gradle 项目中是否更容易?我也将 derby 用作嵌入式数据库。我想问题是,将代码复制到 Gradle 项目是否可以解决我的执行问题以及图像(以及如何解决?)并且它是否仍然支持 DerbyDB?

标签: java netbeans jar


【解决方案1】:

如果你从命令行运行,图片必须在你的类路径中:

java -cp "pictures\*"  

代码如何加载图像? 可能看起来像这样:

Example.class.getResource("pictures/mypic.png");

【讨论】:

  • 所以要添加图像,我将它们加载到我已更新的 SavedData 类中(请参阅帖子上的 edit1)但是,这在从 netbeans 运行项目时非常有效,只有当我运行它时从终端我有这个问题。当我直接双击程序时,还有一个错误提示要检查控制台...
  • 您遇到了什么具体错误?您是否按照描述添加了带有图片的类路径?如果您尝试加载像 'ImageIO.read(this.getClass().getResource("img/Grass.png"));' 之类的图像,输出会是什么?
猜你喜欢
  • 2019-12-16
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 2011-09-16
  • 2017-09-06
  • 2020-05-12
相关资源
最近更新 更多