从 jar 文件加载图像

2024-02-23

我有一个可以在 Netbeans IDE 中完美运行的应用程序,但是当从 dist 目录中的 jar 文件运行时,不会加载必要的图像。

我花了 1 1/2 天阅读这个论坛和其他论坛,试图找到答案,但我无法让 jar 图像工作。

这是我的代码的摘录:

String str = t.getText() + "100.gif";
Image img = null;

if (t != HIDDEN)
{
    ClassLoader cldr = Terrain.class.getClassLoader();
    URL url = cldr.getResource("fantasyhexwar/Images/" + str);

    if (url == null)
        JOptionPane.showMessageDialog(null, "no good");

    img = ImageIO.read(url);
    t.setImage(img);
}

我尝试了很多相对路径的组合,包括“images/”、“/images/”等。图像位于jar文件中:

 fantasyhexwar/Images/plains100.gif
 fantasyhexwar/Images/quarry60.gif
 fantasyhexwar/Images/ram80.gif
 fantasyhexwar/Images/save map40.gif
 fantasyhexwar/Images/scout80.gif
 fantasyhexwar/Images/settler80.gif
 fantasyhexwar/Images/ship80.gif

etc...

我知道我错过了一些基本的东西,但我不确定是什么。我怀疑这与清单文件或可能的类路径有关。

希望有人能指出我正确的方向......

编辑: 问题似乎是这样的

URL url = Terrain.class.getResource("/fantasyhexwar/Images/" + str);

返回空值。这些图像肯定在 JAR 中,绝望中我也尝试了所有可能的相对路径,代码如下:

ClassLoader cldr = Terrain.class.getClassLoader();
URL url = Terrain.class.getResource("/fantasyhexwar/Images/" + str);
if (url == null)
    url = cldr.getResource("/fantasyhexwar/fantasyhexwar/Images/" + str);
if (url == null)
    url = cldr.getResource("fantasyhexwar/fantasyhexwar/Images/" + str);
if (url == null)
    url = cldr.getResource("/fantasyhexwar/Images/" + str);
if (url == null)
    url = cldr.getResource("/Images/" + str);
if (url == null)
    url = cldr.getResource("Images/" + str);
if (url == null)
    url = cldr.getResource("/" + str);
if (url == null)
    url = cldr.getResource(str);
if (url == null)
    JOptionPane.showMessageDialog(null, "no good");

但直接从 JAR 执行时,这些都不起作用......

当我尝试从命令行运行时,我得到:

java -cp .;FantasyHexWar.jar FantasyHexWarApp

Exception in thread "main" java.lang.NoClassDefFoundError: FantasyHexWarApp
Caused by: java.lang.ClassNotFoundException: FantasyHexWarApp
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: FantasyHexWarApp.  Program will exit.

我对文件名有点粗心。例如,一个文件名为“save map.png”,但应用程序正在寻找“Save Map.png”。

当从驱动器加载文件时,这工作得很好,但是当转换成 URL 并直接从 jar 加载时,它就产生了所有的不同。

因此,jar中的资源文件名似乎是区分大小写.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 jar 文件加载图像 的相关文章

随机推荐

  • 基于多列值的 Python pandas groupby 值

    我在 Pandas 数据集中有一个连续的活动数据 sample data code user id 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 4705 4705 4705 4705 4705 223 223
  • 具有 DynamoDB 和 MySQL 双数据源的 Spring Data/JPA 存储库

    我熟悉如何让 Spring 通过多个持久单元和多个entityManagerFactoryBean 实现动态处理多个数据源 但我正在努力解决的是如何拥有 MySQL 方言and通过 spring config xml 文件在同一 sprin
  • 来自调试器的 Ios Xcode 消息:由于内存问题而终止

    我有一个带有集合视图的应用程序 以及此集合视图中的一个单元格 该单元格重定向到外部链接 每当该链接打开时 应用程序就会在后台崩溃并在调试器上显示 由于内存问题而终止 如果我只按主页按钮 应用程序就会继续正常工作 if UIDeviceOri
  • 单例类可以是静态的吗?

    单例类可以是静态的吗 不 单例类应该被实例化 因为该术语本身指的是一个实例 如果将其设为静态类 则无法从中创建单例对象
  • 如何使用Python查找文本文件中的所有isbn?

    我有一个文本文件text isbn里面有大量的 ISBN 我想编写一个脚本来解析它并将其写入一个新的文本文件 每个 ISBN 编号都在新行中 到目前为止 我可以编写用于查找 ISBN 的正则表达式 但无法进一步处理 import re li
  • AngularJS mailto 不发送电子邮件

    我使用以下代码允许我的 AngularJS 应用程序用户使用他们最喜欢的邮件客户端发送电子邮件 但是当我单击 发送 按钮时没有任何反应 有人可以检查我的代码并告诉我我在这里到底缺少什么吗 谢谢
  • 如何在不构建“音频可视化工具”的情况下将 JavaScript 动画与歌曲的节奏同步?

    从我的基本理解来看 JavaScript 音频可视化器是根据实际声波反映音乐的 我想构建像节拍器 http bl ocks org 1399233 这样的东西 我每隔一段时间就为一些 DOM 元素设置动画x beats 我现在这样做的方式是
  • Jasmine 对象“没有方法 'andReturn'”

    茉莉花初学者 茉莉花间谍的第一次尝试 我以为我在模仿格式显示在这里 http pivotal github io jasmine 搜索 andReturn 但我收到一个无法解决的错误 TypeError Object function ca
  • Visual Studio 构建事件立即返回

    我有一个运行时间较长的构建后事件 长到足以令人厌烦地等待 但又短到足以在每次发布编译后完成 我想立即返回到 VS 我尝试过运行批处理文件start但视觉工作室仍在等待cmd返回成功之前关闭窗口 有没有办法在生成此构建后事件时立即返回成功 T
  • 我可以使用 JavaScript 停止元刷新吗?

    以下代码允许用户停止元刷新的发生 并且它成功删除了meta refresh从页面 但浏览器仍然刷新页面 知道如何让它发挥作用吗
  • 无法在 python 3.7 中安装 Matplotlib

    在 Windows 10 64 位机器中安装 matplotlib 时出现错误显示 python setup py egg info failed with error code 1 in C Users Animus AppData Lo
  • Systemd 启用的服务不再在启动时启动

    我很久以前制作了一些自定义的 systemd 服务 它们都具有相同的配置 当然 ExecStart 除外 这个配置工作了很多年 我从 18 04 LTS 版本开始就已经启动并运行了 ubuntu 但现在看起来其中一些 systemd 服务根
  • 如何订阅“/scan”主题、修改消息并发布到新主题?

    我想通过订阅message ranges来改进turtlebot3的LDS 01传感器 通过应用一些算法修改messange ranges并将其发布到新主题 如下所示 但是当我运行编码时出现错误 错误是 遇到溢出的情况 错误是 运行时警告
  • 重绘canvas html5而不闪烁

    我的屏幕每 25 毫秒重绘一次 并且图像闪烁 这是我的代码 var FRAME RATE 40 var intervalTime 1000 FRAME RATE gameLoop function gameLoop context clea
  • 使用装饰器进行 Python 日志记录

    这是我们面对装饰器时遇到的第一个例子 但我无法意识到我到底想要什么 一个名为 LOG 的简单装饰器 它应该像这样工作 LOG def f a b 2 c d pass 结果应该是这样的 f 1 pippo 4 paperino luca E
  • 阻止执行父事件处理程序

    我有一棵 div 树 div div div div div div 当单击 div 时 它会使其子级不可见 即单击 a 将使 b 和 c 不可见 function func if childId hasClass visible chil
  • 带有条件的 Ansible 即席命令

    我想运行此剧本的 Ansible ad hoc 命令 hosts localhost tasks name Print message if ansible version is greater than 2 7 0 debug msg A
  • 在 Ruby 中,术语“元类”、“特征类”和“单例类”完全是同义且可替换的吗?

    的文档Class http www ruby doc org core 2 1 2 Class html类有一个涉及 元类 的令人难以置信的混乱图 我试图揭开这里到底发生了什么的神秘面纱 这三个词都是 元类 特征类 单例类 同义 in Ru
  • 什么是snakemake元数据文件?我什么时候可以删除那些?

    我注意到我的备份 rsync 脚本花费了相当多的时间从以下位置复制具有随机名称的内容 snakemake metadata文件夹 这些文件有什么用 在 Snakemake 运行完成后我可以安全地删除它们吗 或者它们对于 Snakemake
  • 从 jar 文件加载图像

    我有一个可以在 Netbeans IDE 中完美运行的应用程序 但是当从 dist 目录中的 jar 文件运行时 不会加载必要的图像 我花了 1 1 2 天阅读这个论坛和其他论坛 试图找到答案 但我无法让 jar 图像工作 这是我的代码的摘