Java:在jar应用程序中设置图标
我已经开发了一个应用程序,可以导出到一个可运行的jar中(包括它所需的库)。一切正常 从Eclipse运行应用程序时,我可以更改应用程序窗口显示的图标:Java:在jar应用程序中设置图标,java,jar,icons,Java,Jar,Icons,我已经开发了一个应用程序,可以导出到一个可运行的jar中(包括它所需的库)。一切正常 从Eclipse运行应用程序时,我可以更改应用程序窗口显示的图标: BufferedImage image = null; try { image = ImageIO.read(this.getClass().getResource("AT42.png")); } catch (IOException e) {e.printStackTrace();} this.setIconImage(image);
BufferedImage image = null;
try {
image = ImageIO.read(this.getClass().getResource("AT42.png"));
} catch (IOException e) {e.printStackTrace();}
this.setIconImage(image);
图片放在我的.class文件目录中
当我从Eclipse运行它时,它会显示图标,但当我创建一个可运行的jar并执行它时,会出现以下异常:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at com.tools.at4.UserInterface.<init>(UserInterface.java:43)
at com.tools.at4.GeneradorInformes.main(GeneradorInformes.java:8)
... 5 more
线程“main”java.lang.reflect.InvocationTargetException中的异常
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
原因:java.lang.IllegalArgumentException:input==null!
位于javax.imageio.imageio.read(未知源)
在com.tools.at4.UserInterface.(UserInterface.java:43)
位于com.tools.at4.GeneradorInformes.main(GeneradorInformes.java:8)
... 还有5个
我猜这个图标没有包含在jar文件中,我的问题是,有没有任何方法可以包含它,这样当我运行jar文件时,创建的窗口会显示我的图标而不是Java cup
谢谢 对于您正在使用的路径,您的图像需要放在jar文件的根目录下。假设您的映像位于项目中名为“images”的目录中,此ANT任务将把映像放在jar的根目录中:
<target name="construct-jar" depends="compile,javadoc">
<copy todir="${build.dir}">
<fileset dir="images"/>
</copy>
<jar destfile="${dist.dir}/${jar.name}" basedir="${build.dir}"/>
</target>
如果我将文件放在.class文件所在的位置,我应该如下修改代码:
image = ImageIO.read(this.getClass().getResource("/AT42.png"));
谢谢 Jar文件只是zip存档,打开它并检查一下。嗨,dedalo。如何创建JAR文件?+1马特。确切地说,您是如何创建jar文件的?您是在使用Eclipse自己的创建可执行jar(也称为“导出”)功能还是自定义ANT脚本,还是仅仅使用jar命令?在使用Eclipse特性时,只需将png与java源代码一起包含,它就应该包含在内。您好,我转到文件-->导出-->可运行Jar文件。然后我选择这个选项:将所需的库打包到生成的jar中。谢谢尝试将png文件放在side.java文件旁边,看看是否有帮助。