如何将图像捆绑在 jar 文件中

2022-09-03 17:55:41

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

现在,我想知道我们如何将这些图像文件呈现给最终用户(就像我们呈现.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时获得更好的东西,您需要执行以下操作:

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

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

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

按“添加文件夹...”按钮,显示在“源包文件夹”表旁边。将出现一个文件选择器。

使用此选取器选择图像文件夹,然后按“确定”按钮。将添加图像文件夹的条目。

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

将代码更改为使用 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

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


答案 2

对于 NetBeans 6.9 中的 Maven 项目,请将 filen 放入项目“其他源”文件夹中的“资源”。中。

并确保不要忘记前导的“/”


推荐