我做了一个Java应用程序。并将所有类捆绑在jar文件中。.我从netbeans运行项目,我的应用程序运行成功..但是我将我的.jar文件放在另一个地方,然后从那里运行..我没有我的应用程序使用的图标..在代码中,我从项目文件夹中存在的images目录中获取我的图标。
现在,我想知道如何将这些图像文件呈现给最终用户(就像我们呈现.jar文件一样)。
似乎这里有两个问题:
在构建项目时,如何使NetBeans在生成的jar中包含图像文件?
如何从罐子访问图像文件?
此答案适用于NetBeans 6.8并解决了两个子问题。
假设您有一个基于蚂蚁的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。
使用此选择器选择图像文件夹,然后按确定按钮。images文件夹的条目将添加到表中。
使用“项目属性”对话框上的“确定”按钮来接受更改并关闭该对话框。
更改您的代码以使用 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
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)创建图标