[英]Java: setting an icon in a jar application
我已經開發了一個應用程序,可以將其導出到可運行的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
我猜圖標不包含在jar文件中,我的問題是,有沒有包含它的方法,因此當我運行jar文件時,創建的窗口將顯示我的圖標而不是Java杯子?
謝謝!!
使用您正在使用的圖像的路徑需要放在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"));
謝謝!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.