2011-03-26 67 views
0

由於某種原因,當我在NetBeans中使用「clean and build」並嘗試從dist文件夾運行它時,我的應用程序停止工作。應用程序用於從jar文件打開,但現在只閃爍,甚至不會提供任何錯誤消息。應用程序運行,如果我測試使用NetBeans運行F6。 Jar文件是由NetBeans創建的,所以我想清單應該沒問題。。由netbeans創建的jar文件不能在windows上打開

Here's的鏈接jar文件...

+0

你是否在'dist'文件夾中用'java -jar「tbs.jar」'命令運行它?它需要任何外部罐子嗎? – pajton 2011-03-26 23:07:10

+0

pajton建議如果您從命令行運行它,而不是從Windows資源管理器中雙擊它,您可能會看到一個異常來解釋問題所在。 – MeBigFatGuy 2011-03-27 01:45:22

回答

0
  • 有可能是在dist目錄下的lib文件夾。如果是這樣,它包含您包含的任何庫的jar文件。確保是這樣。您需要分發jar以及整個lib文件夾,並將它們存儲在同一個文件夾中,就像Netbeans創建它們一樣。
  • 我希望你已經創建了一個Java應用程序項目,而不是Java類庫項目。
  • 當您「清理並構建」項目時,您可以檢查是否正確添加了main-class屬性和任何庫路徑。
  • 你可以像java -jar tbs.jar那樣運行它並查看響應。
2

執行終端罐子給出了這樣的異常跟蹤:

Exception in thread "main" java.lang.NullPointerException 
    at javax.swing.ImageIcon.<init>(ImageIcon.java:155) 
    at tbs.ImageLoader.loadImage(ImageLoader.java:11) 
    at tbs.Flag.<init>(Flag.java:21) 
    at tbs.Model.<init>(Model.java:58) 
    at tbs.GameView.<init>(GameView.java:33) 
    at tbs.GUI.<init>(GUI.java:36) 
    at tbs.Main.main(Main.java:6) 

所以看起來你有這樣的事情在這裏:

public Image loadImage(String name) { 
    return new ImageIcon(getClass().getResource(name)); 
} 

...並返回getResource()方法null,這導致ImageIcon構造函數拋出異常。

在Flag.java的第21行中,您使用"images/flagNeutral.png"作爲圖像字符串,但是您的jar文件包含images/flagneutral.png(位於tbs目錄內)。看到不同?

如果它在jar外的本地系統上工作,那麼您在那裏使用不區分大小寫的文件系統。 (Windows還是Mac?) 在jar中,以及通過HTTP和「真實」文件系統上,URL都區分大小寫,這意味着您必須在文件命名時精確命名資源。


是的,通常你應該至少自己試過你的程序,併發布堆棧跟蹤以及相關的代碼行。