【问题标题】:How to bundle images in jar file如何将图像捆绑到 jar 文件中
【发布时间】:2011-01-17 09:35:12
【问题描述】:

我制作了一个 java 应用程序。并将所有类捆绑在 jar 文件中..我从 netbeans 运行项目我的应用程序运行成功..但是我将我的 .jar 文件放在另一个地方并从那里运行..i我没有得到我的应用程序使用的图标。在代码中,我从项目文件夹中的图像目录中获取我的图标。

现在,我想知道如何将这些图像文件呈现给最终用户(就像我们呈现 .jar 文件一样)。提前致谢

【问题讨论】:

标签: java netbeans jar


【解决方案1】:

这里好像有两个问题:

  1. 如何让 NetBeans 在我构建项目时生成的 jar 中包含一个图像文件?

  2. 如何访问 jar 中的图像文件?

此答案适用于 NetBeans 6.8 并解决了两个子问题。

假设您有一个基于 ant 的 Java 应用程序项目。

这是项目的“文件”视图

JP
+ images
  + test.jpg
+ nbproject
+ src
  + jp
    + Main.java
+ test
+ build.xml
+ manifest.mf

在你的 Main.java 中有这样的代码:

public static void main(String[] args) throws IOException {
    // find the file in the file system.. probably not a good idea
    File f = new File("images/test.jpg");
    System.out.println(f.getCanonicalPath()+" "+f.exists());

当你从 NB 内部运行这个项目时,你会得到这个输出:

/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true

当你运行打包到 jar 中的代码时,你会得到这样的结果:

bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.txt false

要在执行 jar 时获得更好的结果,您需要执行以下操作:

将图像目录添加为项目的源根目录

右键单击项目并选择“属性”项。将出现一个对话框。

在对话框左侧的列表中选择“来源”。这将更改对话框右侧面板的内容。

按下“源包文件夹”表旁边的“添加文件夹...”按钮。将出现一个 FileChooser。

使用此选择器选择图像文件夹,然后按 OK 按钮。图片文件夹的条目将被添加到表中。

使用“项目属性”对话框上的“确定”按钮接受更改并关闭对话框。

更改您的代码以使用Class.getResource()

public static void main(String[] args) throws IOException {
    // find the file in the file system.. probably not a good idea
    File f = new File("images/test.jpg");
    System.out.println(f.getCanonicalPath()+" "+f.exists());
    URL url = Main.class.getResource("/test.jpg");
    System.out.println(url);

当您从 IDE 内部运行项目时,您应该会看到如下内容:

/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg

当你运行打包到 jar 中的代码时,你会得到这样的结果:

bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.jpg false
jar:file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar!/test.jpg

获取test.jpg文件的URL后,可以使用ImageIcon(URL)创建图标

【讨论】:

  • 非常感谢。我在从 .exe java 应用程序包装器中引用图像资源时遇到了类似的问题。但是,使用您的解决方案,一切都会完美运行。
【解决方案2】:

对于 NetBeans 6.9 中的 Maven 项目,将您的文件放入项目“Other Sources”文件夹中的 Resources 中。

并确保不要忘记开头的“/”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-17
    • 2015-12-04
    • 1970-01-01
    • 2014-07-25
    • 2018-04-06
    • 2014-06-26
    • 2010-12-15
    相关资源
    最近更新 更多