簡體   English   中英

Java:在jar應用程序中設置圖標

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM