簡體   English   中英

導出可運行Jar后無法找到資源

[英]Cannot Locate Resources after Exporting Runnable Jar

我有一個在Eclipse中可以正常運行的Java項目,但是當我將其導出到可運行的Jar文件(選擇“將所需的庫打包到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(JarRsrcLoa
    der.java:58)
Caused by: java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at cib.cad.kernel.cmds.StartGui.doCmd(StartGui.java:94)
    at cib.util.cmd.CmdMgr.doCmd(CmdMgr.java:91)
    at cib.cad.kernel.Kernel.begin(Kernel.java:1058)
    at cib.cad.Stylemaster.main(Stylemaster.java:70)
    ... 5 more
Exception in thread "Thread-1" java.lang.NullPointerException
    at cib.cad.kernel.Kernel.setPreferredLocation(Kernel.java:2615)
    at cib.cad.view.ErrorMessagePrintStream$MsgThread._showMessageDialog(Err
    orMessagePrintStream.java:303)
    at cib.cad.view.ErrorMessagePrintStream$MsgThread.run(ErrorMessagePrintS
    tream.java:268)

並且StartGui.doCmd(StartGui.java:94)上的代碼如下所示:

try {
        ClassLoader cl = StartGui.class.getClassLoader();
        URL url = cl.getResource("cib/cad/img/StyleIcon.jpg");      
        Image icon = new ImageIcon(url).getImage();   //<--  Line 94
        frame.setIconImage(icon);
}
catch (IllegalArgumentException e) {
}

我以為是因為該空指針異常而引起的,因為它無法找到該圖標,但是我不完全理解為什么它在eclipse中可以完美地運行。

在此先感謝善良的人們。

嘗試這個。

Image icon = new ImageIcon(StartGui.class.getClassLoader()
                           .getResourceAsStream("cib/cad/img/StyleIcon.jpg"))
                           .getImage();

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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