如何在jar文件中捆绑图像

时间:2010-02-16 13:09:17

标签: java netbeans jar

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

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

2 个答案:

答案 0 :(得分:29)

这里似乎有两个问题:

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

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

  3. 此答案适用于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时获得更好的效果,您需要执行以下操作:

    将images目录添加为项目的源根

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

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

    按“源包文件夹”表旁边的“添加文件夹...”按钮。将出现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)创建图标

答案 1 :(得分:3)

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

确保你不要忘记领先的“/”