首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可运行jar (ExceptionInInitializerError)

可运行jar (ExceptionInInitializerError)
EN

Stack Overflow用户
提问于 2015-01-14 04:19:08
回答 2查看 337关注 0票数 0

我有一个问题,我知道,但我不知道如何解决它。我在我的项目中有一个类,它包含带有图像或声音的静态字段,这样我就可以在任何地方使用它们,而不需要每次都重新创建变量。其中一个可供引用的字段(它们都是相同的):

代码语言:javascript
复制
public static ImageIcon mainMenuBg = new ImageIcon(Resources.class.getResource("img/menubg.png"));

现在我的问题是,当我运行它时,它在Eclipse中工作得很好,但是当我将项目导出到一个可运行的JAR时,什么也没有发生。然后我进入命令窗口并从那里运行它,由于我的图像,我有了这个ExceptionInInitializerError。基本上,没有一个图像在运行时被识别,所以如果我删除每个图像调用,它就可以工作。

此外,值得注意的是,在导出时,Main类的列表并没有真正更新。如果我更改了项目的main名称,它不会添加到列表中。会不会是我的主类有问题呢?如果是这样,我如何解决这个问题?我已经试着重新创建它了,但是什么都没有改变。有人能给我讲讲这个问题吗?

以下是printstacktrace:

代码语言:javascript
复制
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

其中指向的行是我试图从我的资源类中加载图像的行。

而且,我的所有类都在同一个包中,即默认包中。

最后,这里是“jar tvf ...”命令的结果:

代码语言:javascript
复制
     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
EN

回答 2

Stack Overflow用户

发布于 2015-01-14 22:06:35

在深入研究了周围的文档后,我认为问题可能是您使用的是相对路径,而不是这里解释的绝对路径:

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

因此,请尝试:

代码语言:javascript
复制
ImageIcon mainMenuBg = new ImageIcon(Resources.class.getResource("/img/menubg.png"));
票数 1
EN

Stack Overflow用户

发布于 2015-01-14 04:35:59

在你的图片中使用类似这样的东西。

代码语言:javascript
复制
ClassLoader cldr = this.getClass().getClassLoader();
URL picture = cldr.getResource("files/gcf.jpg");
ImageIcon mainMenuBg = new ImageIcon(picture);

还有声音。

代码语言:javascript
复制
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 ??");
}

(对于URL类,导入java.net.*;)将您的/files文件夹放入/src文件夹并创建您的JAR。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27930769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档