Java 如何在jar文件中绑定图像
我制作了一个java应用程序,并将所有类捆绑在jar文件中..我从netbeans运行项目,我的应用程序正在成功运行..但我将.jar文件放在另一个地方并从那里运行..我没有得到我的应用程序使用的图标..在代码中,我从项目文件夹中的images目录中获取图标Java 如何在jar文件中绑定图像,java,netbeans,jar,Java,Netbeans,Jar,我制作了一个java应用程序,并将所有类捆绑在jar文件中..我从netbeans运行项目,我的应用程序正在成功运行..但我将.jar文件放在另一个地方并从那里运行..我没有得到我的应用程序使用的图标..在代码中,我从项目文件夹中的images目录中获取图标 现在,我想知道如何将这些图像文件呈现给最终用户(就像我们呈现的.jar文件一样)。提前感谢这里似乎有两个问题: 如何让NetBeans在构建项目时生成的jar中包含一个映像文件 如何从jar访问图像文件 这个答案适用于NetBeans 6.
现在,我想知道如何将这些图像文件呈现给最终用户(就像我们呈现的.jar文件一样)。提前感谢这里似乎有两个问题:
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());
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
/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
当您从NB内部运行此项目时,您会得到以下输出:
/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
当您运行打包到jar中的代码时,您会得到如下结果:
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());
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
/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
要在执行jar时获得更好的效果,需要执行以下操作:
添加图像目录作为项目的源根目录
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);
在项目上单击鼠标右键,然后选择“属性”项。将出现一个对话框
在对话框左侧的列表中选择“源”。这将更改对话框右侧面板的内容
按下“源程序包文件夹”表旁边显示的“添加文件夹…”按钮。将出现一个文件选择器
使用此选择器选择图像文件夹,然后按“确定”按钮。“图像”文件夹的条目将添加到表中
使用“项目属性”对话框上的“确定”按钮接受更改并关闭对话框
更改代码以使用
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内部运行项目时,您应该看到如下内容:
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());
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
/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
当您运行打包到jar中的代码时,您将得到如下结果:
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());
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
/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后,可以使用为NetBeans 6.9中的Maven项目创建图标,将文件放入项目“其他源”文件夹中的参考资料中
请确保不要忘记开头的“/”谢谢。我在从.exe java应用程序包装器中引用图像资源时遇到了类似的问题。然而,在您的解决方案中,一切都很完美。