如何在jar文件中打包图像

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

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

这里似乎有两个问题:

  1. 如何让NetBeans在构build项目时生成的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/JavaApplication2http://img.dovov.comtest.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-mainhttp://img.dovov.comtest.txt false 

为了更好的执行jar时,你需要做以下的事情:

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

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

在对话框左边的列表中select“Sources”。 这将改变对话框右侧面板的内容。

按下“源包文件夹”表格旁边的“添加文件夹…”button。 FileChooser将出现。

使用此select器select图像文件夹,然后按OKbutton。 图像文件夹的一个条目将被添加表。

使用“项目属性”对话框上的“确定”button接受更改并closures对话框。

改变你的代码使用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/JavaApplication2http://img.dovov.comtest.jpg true file:/export/home/vkraemer/NetBeansProjects/JavaApplication2http://img.dovov.comtest.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-mainhttp://img.dovov.comtest.jpg false jar:file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar!/test.jpg 

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

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

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