【问题标题】:Exporting an JAR file in Eclipse and referencing a file在 Eclipse 中导出 JAR 文件并引用文件
【发布时间】:2012-04-08 20:36:10
【问题描述】:

我有一个项目,其中的图像存储为我希望使用的徽标。

URL logoPath = new MainApplication().getClass().getClassLoader().getResource("img/logo.jpg");

使用该方法获取文件的 URL 并将其转换为字符串。然后,我必须将其子串 5 以摆脱此输出“file:/C:/Users/Stephen/git/ILLA/PoC/bin/img/logo.jpg”

但是,当我将其导出为 jar 并运行它时,我遇到了麻烦。 URL 现在读取 /ILLA.jar!/ 我的图像只是空白。我有一种直觉,它让我绊倒了,我该如何解决这个问题?

干杯

【问题讨论】:

    标签: eclipse image jar export


    【解决方案1】:

    你快到了。

    jar 中的图像被视为资源。您需要使用类路径引用它们 只需使用 getClass().getResource: 类似:

    getClass().getResource("/images/logo.jpg")); 其中“images”是jar文件中的一个包,路径如上

    查看调用中的前导 / - 这将有助于正确访问路径(使用绝对而不是相对)。只要确保路径正确

    另见:

    How to includes all images in jar file using eclipse

    【讨论】:

    • 好的,所以当我将它引用到 ImageLabel(它接受一个字符串,它是文件的绝对路径)时,我应该在开始时使用子字符串删除“jar:file:/” ?我仍然遇到同样的问题,在 Eclipse 中工作正常,但在将其导出为 Jar 文件后会出错。
    • 是的,不需要使用 "jar:file://" - 只需将其视为包含资源的包的路径。所以当你打包jar时,如果它包含/images/logo.jpg你很好
    • 当我将它作为 Jar 文件运行时,我得到以下路径,“C:/Users/Stephen/workspace/ILLA.jar!/img/logo.jpg”是正常的吗?
    • 虽然这很正常,但通常不会以这种方式消耗 URL。您打算在哪里使用 URL?通常它会被传递到其他 API,例如 ImageIcon 等
    • 我将它与一个自定义类一起使用,该类接受一个应该是文件位置的字符串参数。显然,处理该路径存在一些问题。或者,如果允许将 ImageIcon 添加到 JFrame,我可以使用它。
    【解决方案2】:

    请看这里:Create a file object from a resource path to an image in a jar file

    String imgName = "/resources/images/image.jpg";
    InputStream in = getClass().getResourceAsStream(imgName);
    ImageIcon img = new ImageIcon(ImageIO.read(in));
    

    请注意,您似乎需要为存档中的资源使用流。

    【讨论】:

    • 查看我的图像文件是从字符串而不是 InputStream 读取的。它实际上只是在寻找图像的路径。
    猜你喜欢
    • 2012-06-25
    • 2010-09-30
    • 2015-07-03
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    相关资源
    最近更新 更多