Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:在jar应用程序中设置图标_Java_Jar_Icons - Fatal编程技术网

Java:在jar应用程序中设置图标

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);

我已经开发了一个应用程序,可以导出到一个可运行的jar中(包括它所需的库)。一切正常

从Eclipse运行应用程序时,我可以更改应用程序窗口显示的图标:

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文件旁边,看看是否有帮助。