【问题标题】:Unable to display an image from within Jar file [duplicate]无法从 Jar 文件中显示图像 [重复]
【发布时间】:2020-02-18 22:20:49
【问题描述】:

我知道以前有人问过这个问题,但是在尝试了所有变体后我无法让它工作。我有一个小程序,我希望启动框架上显示图像。我可以通过将 jar 放在与图像相同的文件夹中并引用它来实现这一点,但是当我尝试在 jar 文件本身中引用时,我不断收到错误:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException

我使用的代码是这样的:

private void imagePanel() {
    setLayout(new BorderLayout());
    BufferedImage image;
    try {
        image = ImageIO.read(this.getClass().getResource("/src/ticketMaster/img/logo.png"));
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    add(new JLabel(new ImageIcon(image)), BorderLayout.CENTER);
}

我不确定路径是否不正确,我在名为 img 的包中创建了一个 img 文件夹,其中包含徽标。我已经尝试了它的所有变体

/img/logo.png
/ticketMaster/img/logo.png
/src/ticketMaster/img/logo.png

我无法像引用 jar 外的图像那样加载图像。我也使用过resourceasstream,但没有任何运气。

这里有什么想法吗?

【问题讨论】:

  • 您缺少详细信息 - 与顶级 src 文件夹相关的图像存储在哪里?你永远不应该引用src - 打包时它不会存在。解压缩 Jar 文件并确保包含图像。重复发布不会很好,除非您可以提供一些关于为什么其他解决方案不起作用的信息。我的猜测,根据您提供的内容是路径错误或图像未包含在您的 Jar 中
  • 它在包的根目录下,我试过把它拿出来直接把图片也放到根目录下,还是不行。
  • “它在包的根文件夹中” - 它本身是什么?然后使用/logo.png作为路径
  • 请不要重复同样的问题,因为这违反了网站规则。
  • 好的,所以我再次打包,它没有将图像放入 jar 文件中,仅将类放入 jar 中。我在 Eclipse 的运行配置中添加了 info 文件夹。不知道我在那里做错了什么

标签: java image swing


【解决方案1】:

我不知道你的文件夹或你的包结构,但是你可以尝试删除你在 getRessource() 方法中给出的路径的第一个'/',它可能正在寻找一个绝对路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2012-07-09
    • 2013-06-15
    相关资源
    最近更新 更多