【问题标题】:Why isn't my JAR file packing with its folders, and reading them?为什么我的 JAR 文件没有与它的文件夹一起打包并读取它们?
【发布时间】:2013-12-16 00:32:50
【问题描述】:

我有这个问题大约一年了,为什么当我用 res 文件夹(比如游戏)打包我的 JAR 文件时,它打包了文件夹,但不读取它?我已经尝试将 res 文件夹单独设置为一个包,并且我尝试了各种访问图像的方法:

Toolkit.getDefaultToolkit().getImage("res/player.png");
Image player = new ImageIcon("res/player.png").getImage();
Image player = ImageIO.read(new File("res/player.png"));

但它们根本不起作用……我需要帮助,但我不知道如何解决这个问题……

【问题讨论】:

  • 看来您已经尝试了很长时间,因此我很惊讶您从未见过表明 1) 列出 Jar 内容或 2) 的帖子到部署时,这些资源可能是embedded-resource。那么.. Jar 的内容是什么,你检查了 info.page 中的嵌入资源标签吗?

标签: java image jar package embedded-resource


【解决方案1】:

阅读所有这些方法的 javadoc。它们都以 文件 的名称作为参数。所以他们会在你的硬盘上查找文件<current directory>/res/player.png

但是您的图像不是硬盘驱动器上的文件。它是您的 jar 文件中的资源。您希望以与加载此 jar 文件中的类相同的方式加载此资源:使用 ClassLoader。你需要的是

ImageIcon image = new ImageIcon(SomeClassOfYourApp.class.getResource("/res/player.png"));

ImageIcon image = new ImageIcon(getClass().getClassLoader().getResource("res/player.png"));

假设 jar 中文件的路径是/res/player.png

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2012-05-14
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多