2015-01-13 4 views
0

У меня проблема, которую я понимаю, но я понятия не имею, как ее исправить. У меня есть класс в моем проекте, который содержит статические поля с изображениями или звуками, чтобы я мог использовать их везде без повторного создания переменных каждый раз. Одно из полей для справки (они все же):Runnable jar (ExceptionInInitializerError)

public static ImageIcon mainMenuBg = new ImageIcon(Resources.class.getResource("img/menubg.png")); 

Теперь моя проблема не в том, что она отлично работает в Eclipse, когда я бегу, но когда я экспортировать проект в работоспособный JAR, ничего не происходит , Затем я зашел в командное окно и запустил его оттуда, и у меня есть ExceptionInInitializerError из-за моих изображений. В принципе, ни одно из изображений не распознается во время выполнения, поэтому, если я удаляю каждый вызов изображения, он работает.

Кроме того, стоит отметить, что при экспорте список классов Main на самом деле не обновляется. Если я изменю имя основного проекта, оно не будет добавлено в список. Возможно, это проблема с моим основным классом? Если да, то как я могу это исправить? Я попытался воссоздать его уже, но ничего не изменилось. Не мог бы кто-нибудь просветить меня об этой проблеме, пожалуйста?

Вот printstacktrace:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError 
    at Client.<init>(Client.java:53) 
    at Client$1.run(Client.java:37) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$400(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
    at javax.swing.ImageIcon.<init>(Unknown Source) 
    at Ressources.<clinit>(Ressources.java:41) 
    ... 16 more 

Где линии заостренные являются линии, в которых я пытаюсь загрузить изображение из моего класса ресурсов.

Кроме того, все мои классы находятся в одном пакете, по умолчанию.

Наконец, здесь есть «баночка ТВФ ... Результат командования:

 153 Tue Jan 13 21:43:36 CET 2015 META-INF/MANIFEST.MF 
    0 Tue Jan 13 21:43:36 CET 2015 org/ 
    0 Tue Jan 13 21:43:36 CET 2015 org/eclipse/ 
    0 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/ 
    0 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/internal/ 
    0 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/internal/jarinjarloader/ 
    978 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/internal/jarinjarloader/JIJC 
    onstants.class 
    714 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/internal/jarinjarloader/JarR 
srcLoader$ManifestInfo.class 
    4735 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/internal/jarinjarloader/JarR 
srcLoader.class 
    1505 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/internal/jarinjarloader/Rsrc 
URLConnection.class 
    1841 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/internal/jarinjarloader/Rsrc 
URLStreamHandler.class 
    1149 Tue Jan 13 21:43:36 CET 2015 org/eclipse/jdt/internal/jarinjarloader/Rsrc 
URLStreamHandlerFactory.class 
    1495 Tue Jan 13 21:43:06 CET 2015 ChatPrive$1.class 
    1792 Tue Jan 13 21:43:06 CET 2015 ChatPrive$2.class 
    1596 Tue Jan 13 21:43:06 CET 2015 ChatPrive$3.class 
    1897 Tue Jan 13 21:43:06 CET 2015 ChatPrive$4.class 
    1553 Tue Jan 13 21:43:06 CET 2015 ChatPrive$5.class 
    7565 Tue Jan 13 21:43:06 CET 2015 ChatPrive.class 
    2680 Tue Jan 13 21:43:06 CET 2015 Tour.class 
    9003 Tue Jan 13 21:43:06 CET 2015 Move.class 
    2622 Tue Jan 13 21:43:06 CET 2015 InfosPartie.class 
    1448 Tue Jan 13 21:43:06 CET 2015 Message.class 
    3262 Tue Jan 13 21:43:06 CET 2015 Roi.class 
    1464 Tue Jan 13 21:43:06 CET 2015 Case.class 
    987 Tue Jan 13 21:43:06 CET 2015 JoueurIA.class 
    750 Tue Jan 13 21:43:06 CET 2015 MenuCopie$1.class 
    1307 Tue Jan 13 21:43:06 CET 2015 MenuCopie$2.class 
    2992 Tue Jan 13 21:43:06 CET 2015 MenuCopie.class 
    7882 Tue Jan 13 21:43:06 CET 2015 ReceptionClient.class 
    1138 Tue Jan 13 21:43:06 CET 2015 Chat$1.class 
    851 Tue Jan 13 21:43:06 CET 2015 Chat$2.class 
    3835 Tue Jan 13 21:43:06 CET 2015 Chat.class 
    2263 Tue Jan 13 21:43:06 CET 2015 Fou.class 
    832 Tue Jan 13 21:43:06 CET 2015 MenuPromotion$1.class 
    2081 Tue Jan 13 21:43:06 CET 2015 MenuPromotion$2.class 
    1401 Tue Jan 13 21:43:06 CET 2015 MenuPromotion$3.class 
    1216 Tue Jan 13 21:43:06 CET 2015 MenuPromotion$4.class 
    1216 Tue Jan 13 21:43:06 CET 2015 MenuPromotion$5.class 
    1216 Tue Jan 13 21:43:06 CET 2015 MenuPromotion$6.class 
    4231 Tue Jan 13 21:43:06 CET 2015 MenuPromotion.class 
    1501 Tue Jan 13 21:43:06 CET 2015 Jeu$1.class 
    825 Tue Jan 13 21:43:06 CET 2015 Jeu$2.class 
10677 Tue Jan 13 21:43:06 CET 2015 Jeu.class 
    1457 Tue Jan 13 21:43:06 CET 2015 ChatAll$1.class 
    1570 Tue Jan 13 21:43:06 CET 2015 ChatAll$2.class 
    1344 Tue Jan 13 21:43:06 CET 2015 ChatAll$3.class 
    1914 Tue Jan 13 21:43:06 CET 2015 ChatAll$4.class 
    1527 Tue Jan 13 21:43:06 CET 2015 ChatAll$5.class 
    9326 Tue Jan 13 21:43:06 CET 2015 ChatAll.class 
    1135 Tue Jan 13 21:43:06 CET 2015 PanelInfo$1.class 
    1337 Tue Jan 13 21:43:06 CET 2015 PanelInfo$10.class 
    1164 Tue Jan 13 21:43:06 CET 2015 PanelInfo$11.class 
    963 Tue Jan 13 21:43:06 CET 2015 PanelInfo$12.class 
    1335 Tue Jan 13 21:43:06 CET 2015 PanelInfo$13.class 
    963 Tue Jan 13 21:43:06 CET 2015 PanelInfo$14.class 
    830 Tue Jan 13 21:43:06 CET 2015 PanelInfo$15.class 
    829 Tue Jan 13 21:43:06 CET 2015 PanelInfo$16.class 
    1435 Tue Jan 13 21:43:06 CET 2015 PanelInfo$2.class 
    576 Tue Jan 13 21:43:06 CET 2015 PanelInfo$3.class 
    1748 Tue Jan 13 21:43:06 CET 2015 PanelInfo$4.class 
    1356 Tue Jan 13 21:43:06 CET 2015 PanelInfo$5.class 
    1552 Tue Jan 13 21:43:06 CET 2015 PanelInfo$6.class 
    1556 Tue Jan 13 21:43:06 CET 2015 PanelInfo$7.class 
    945 Tue Jan 13 21:43:06 CET 2015 PanelInfo$8.class 
    1437 Tue Jan 13 21:43:06 CET 2015 PanelInfo$9.class 
16765 Tue Jan 13 21:43:06 CET 2015 PanelInfo.class 
    1176 Tue Jan 13 21:43:06 CET 2015 MenuUtilisateurs$1.class 
    1173 Tue Jan 13 21:43:06 CET 2015 MenuUtilisateurs$2.class 
    1753 Tue Jan 13 21:43:06 CET 2015 MenuUtilisateurs$3.class 
    2228 Tue Jan 13 21:43:06 CET 2015 MenuUtilisateurs$4.class 
    2071 Tue Jan 13 21:43:06 CET 2015 MenuUtilisateurs.class 
    3996 Tue Jan 13 21:43:06 CET 2015 Piece.class 
    3830 Tue Jan 13 21:43:06 CET 2015 PartieSolo.class 
    3300 Tue Jan 13 21:43:06 CET 2015 ConnexionClient.class 
    1160 Tue Jan 13 21:43:06 CET 2015 EchecGUI$1.class 
    8154 Tue Jan 13 21:43:06 CET 2015 EchecGUI.class 
    6844 Tue Jan 13 21:43:06 CET 2015 Joueur.class 
    677 Tue Jan 13 21:43:06 CET 2015 Client$1.class 
    834 Tue Jan 13 21:43:06 CET 2015 Client$2.class 
    2718 Tue Jan 13 21:43:06 CET 2015 Client$3.class 
    1041 Tue Jan 13 21:43:06 CET 2015 Client$4.class 
    1008 Tue Jan 13 21:43:06 CET 2015 Client$5.class 
    983 Tue Jan 13 21:43:06 CET 2015 Client$6.class 
    1096 Tue Jan 13 21:43:06 CET 2015 Client$7.class 
    4611 Tue Jan 13 21:43:06 CET 2015 Client.class 
    2783 Tue Jan 13 21:43:06 CET 2015 Pion.class 
    663 Tue Jan 13 21:43:06 CET 2015 JoueurReel.class 
    1620 Tue Jan 13 21:43:06 CET 2015 MessagePrive.class 
    6302 Tue Jan 13 21:43:06 CET 2015 PartieEnLigne.class 
    1911 Tue Jan 13 21:43:06 CET 2015 Cheval.class 
    6817 Tue Jan 13 21:43:06 CET 2015 Ressources.class 
    1235 Tue Jan 13 21:43:06 CET 2015 NotificationMessage$1.class 
    1348 Tue Jan 13 21:43:06 CET 2015 NotificationMessage.class 
    3835 Tue Jan 13 21:43:06 CET 2015 PartieAmi.class 
    1355 Tue Jan 13 21:43:06 CET 2015 EmissionClient.class 
    2999 Tue Jan 13 21:43:06 CET 2015 Reine.class 
    0 Tue Jan 13 20:55:48 CET 2015 img/ 
    945 Sun Jan 11 19:40:24 CET 2015 img/attaque.png 
196863 Fri Jan 09 22:59:04 CET 2015 img/board.png 
595046 Sun Jan 11 22:04:40 CET 2015 img/board1.png 
631303 Sat Jan 10 00:14:04 CET 2015 img/board2.png 
    440 Sun Jan 11 22:32:28 CET 2015 img/boutonchat.png 
    413 Sun Jan 11 22:32:46 CET 2015 img/boutonchatsel.png 
    735 Sun Jan 11 21:53:46 CET 2015 img/boutonrecommencer.png 
    793 Sun Jan 11 21:54:52 CET 2015 img/boutonrecommencersel.png 
    258 Wed Dec 24 17:28:54 CET 2014 img/caseCible.png 
    224 Sat Jan 10 18:23:04 CET 2015 img/casePleinePoss.png 
    1100 Sat Jan 10 18:14:06 CET 2015 img/caseSelectionnee.png 
    224 Sat Jan 10 18:14:30 CET 2015 img/caseVidePoss.png 
    5962 Wed Dec 24 17:28:54 CET 2014 img/chevalblanc.png 
    1203 Mon Jan 12 21:37:44 CET 2015 img/chevalblancmort.png 
    1106 Sun Jan 11 00:40:14 CET 2015 img/chevalblancpromo.png 
    5720 Wed Dec 24 17:28:54 CET 2014 img/chevalnoir.png 
    1214 Mon Jan 12 21:37:44 CET 2015 img/chevalnoirmort.png 
    1119 Sun Jan 11 00:40:50 CET 2015 img/chevalnoirpromo.png 
    8080 Mon Jan 12 20:44:20 CET 2015 img/echec.png 
29956 Mon Jan 12 00:08:06 CET 2015 img/ecranpause.png 
    3736 Thu Jan 08 00:14:42 CET 2015 img/fondlabel.png 
    5783 Sun Jan 11 19:04:14 CET 2015 img/fondlabelblanc.png 
    6968 Sun Jan 11 19:04:18 CET 2015 img/fondlabelnoir.png 
    5327 Sun Jan 11 22:22:52 CET 2015 img/footer.png 
    4087 Wed Dec 24 17:28:54 CET 2014 img/foublanc.png 
    1024 Mon Jan 12 21:37:46 CET 2015 img/foublancmort.png 
    887 Sun Jan 11 00:43:04 CET 2015 img/foublancpromo.png 
    3987 Wed Dec 24 17:28:54 CET 2014 img/founoir.png 
    1010 Mon Jan 12 21:37:48 CET 2015 img/founoirmort.png 
    864 Sun Jan 11 00:43:24 CET 2015 img/founoirpromo.png 
10904 Sun Jan 11 01:19:48 CET 2015 img/historique.png 
260917 Tue Jan 13 20:55:48 CET 2015 img/menubg.png 
127477 Tue Jan 13 19:30:36 CET 2015 img/panelinfobg.png 
    270 Sun Jan 11 22:13:34 CET 2015 img/pause.png 
    256 Sun Jan 11 22:13:48 CET 2015 img/pausesel.png 
    3817 Mon Jan 12 01:41:14 CET 2015 img/pionblanc.png 
    979 Mon Jan 12 21:37:50 CET 2015 img/pionblancmort.png 
    3813 Thu Jan 08 00:39:10 CET 2015 img/pionnoir.png 
    992 Mon Jan 12 21:37:42 CET 2015 img/pionnoirmort.png 
    379 Sun Jan 11 23:00:42 CET 2015 img/play.png 
    377 Sun Jan 11 23:00:28 CET 2015 img/playsel.png 
37986 Mon Jan 12 01:17:54 CET 2015 img/promobg.png 
    449 Sun Jan 11 22:58:14 CET 2015 img/redo.png 
    439 Sun Jan 11 22:58:32 CET 2015 img/redosel.png 
    5292 Wed Dec 24 17:28:54 CET 2014 img/reineblanc.png 
    1245 Mon Jan 12 21:37:54 CET 2015 img/reineblancmort.png 
    1140 Sun Jan 11 00:41:18 CET 2015 img/reineblancpromo.png 
    5185 Wed Dec 24 17:28:54 CET 2014 img/reinenoir.png 
    1222 Mon Jan 12 22:24:28 CET 2015 img/reinenoirmort.png 
    1115 Sun Jan 11 00:41:40 CET 2015 img/reinenoirpromo.png 
    5809 Mon Jan 12 00:11:32 CET 2015 img/reprendreBtn.png 
    4946 Mon Jan 12 00:12:56 CET 2015 img/reprendreBtnsel.png 
    5889 Wed Dec 24 17:28:54 CET 2014 img/roiblanc.png 
    5717 Wed Dec 24 17:28:54 CET 2014 img/roinoir.png 
    2152 Sun Jan 11 00:57:20 CET 2015 img/roque.png 
    2144 Sun Jan 11 19:26:50 CET 2015 img/roqueblanc.png 
    2099 Sun Jan 11 19:26:16 CET 2015 img/roquenoir.png 
    529 Mon Jan 12 21:58:58 CET 2015 img/sonoff.png 
    503 Mon Jan 12 21:59:24 CET 2015 img/sonoffsel.png 
    686 Mon Jan 12 21:59:36 CET 2015 img/sonon.png 
    623 Mon Jan 12 21:59:52 CET 2015 img/sononsel.png 
    395 Sun Jan 11 22:43:30 CET 2015 img/surrender.png 
    357 Sun Jan 11 22:43:46 CET 2015 img/surrendersel.png 
    849 Mon Jan 12 19:40:22 CET 2015 img/tooltip.png 
    4564 Wed Dec 24 17:28:54 CET 2014 img/tourblanc.png 
    1146 Mon Jan 12 21:38:00 CET 2015 img/tourblancmort.png 
    1008 Sun Jan 11 00:42:16 CET 2015 img/tourblancpromo.png 
    4528 Wed Dec 24 17:28:54 CET 2014 img/tournoir.png 
    1135 Mon Jan 12 21:38:04 CET 2015 img/tournoirmort.png 
    986 Sun Jan 11 00:42:42 CET 2015 img/tournoirpromo.png 
    453 Sun Jan 11 22:57:06 CET 2015 img/undo.png 
    441 Sun Jan 11 22:56:48 CET 2015 img/undosel.png 
    1326 Mon Jan 12 01:13:52 CET 2015 img/valider.png 
    1393 Mon Jan 12 01:19:40 CET 2015 img/validersel.png 
    0 Tue Jan 13 18:50:36 CET 2015 snd/ 
2248748 Mon Jan 12 23:35:38 CET 2015 snd/ambiancefeu.wav 
77868 Mon Jan 12 23:32:06 CET 2015 snd/attaque.wav 
25988 Tue Jan 13 00:08:06 CET 2015 snd/boutonclic.wav 
397356 Mon Jan 12 21:02:50 CET 2015 snd/echec.wav 
43342 Sun Jan 11 23:59:36 CET 2015 snd/hover.wav 
319532 Wed Jan 07 00:43:04 CET 2015 snd/message.wav 
108464 Mon Jan 12 23:45:02 CET 2015 snd/played.wav 
606552 Tue Jan 13 18:50:36 CET 2015 snd/promotion.wav 
112156 Sat Jan 10 19:06:50 CET 2015 snd/select.wav 
+1

Вы не смогли предоставить нам 3 наиболее важную информацию: полную трассировку стека исключения, пакет класса ресурсов и содержимое файла jar (полученный с помощью 'jar tvf thejar.jar'). –

+0

По моему опыту Сообщение ExceptionInInitializerError довольно неинформативно (без указания трассировки стека причин причины). Если это так, возможно, вы хотите изменить код для выполнения инициализации вне статических блоков, чтобы лучше понять, что происходит. –

+0

Можете ли вы рассказать нам, включены ли эти изображения в файл jar и их относительный путь как @JBNizet просил? –

ответ

0

Используйте Somthing как это для ваших изображений.

ClassLoader cldr = this.getClass().getClassLoader(); 
URL picture = cldr.getResource("files/gcf.jpg"); 
ImageIcon mainMenuBg = new ImageIcon(picture); 

И для звуков.

ClassLoader cldr = this.getClass().getClassLoader(); 
URL musicurl = cldr.getResource("files/gcf.wav"); 
try{ 
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(musicurl); 
    Clip clip = AudioSystem.getClip(); 
clip.open(audioInputStream); 
    clip.start(); 
} 
catch (Exception ex){ 
System.out.println("loading ??"); 
} 

(импорт java.net. *; Для класса URL) Положите ваши файлы/папки в папку/Src и создать JAR.

+0

Я пробовал это решение, но это ничего не меняет. – zuokuok

1

Порывшись в документации вокруг, я думаю, что это возможно, что проблема заключается в том, что вы используете относительный путь вместо абсолютного пути, как описано здесь:

[http://www.thinkplexx.com/learn/howto/java/system/java-resource-loading-explained-absolute-and-relative-names-difference-between-classloader-and-class-resource-loading]

Поэтому, пожалуйста, попробуйте:

ImageIcon mainMenuBg = new ImageIcon(Resources.class.getResource("/img/menubg.png")); 
+0

К сожалению, никакого результата. Если это какая-то помощь, я сделал свой основной класс как JFrame с режимом дизайна.Затем, очень поздно в моем проекте, я решил переименовать свой основной класс с помощью refactor/rename. У меня появилось предупреждающее сообщение, в котором говорилось, что он может работать не так (хотя они предупреждали меня о сценариях, которых у меня нет). К сожалению, я не экспортировал проект в банку какое-то время, поэтому я не уверен, что проблема началась там. Хотя я уверен, что он работал до того, как я реорганизовал И добавил все свои ресурсы в один класс со статическими полями. Спасибо за помощь кстати, оцените это. – zuokuok