2012-09-24 73 views
1

我正在創建'Pong'的基本遊戲。除了我需要刪除的一些小故障外,我已經完成了遊戲。該遊戲在netbeans中運行完美,但如果我創建一個jar文件錯誤出現導致它無法正常工作。 我對Java很新,但我相信這是與我的代碼尋找圖像有關,但圖像尚未加載。這是錯誤。 如何在jar文件的netbeans之外工作?遊戲適用於netbeans,但不適用於jar文件以外的netbeans?

C:\Users\michael>java -jar "C:\Users\michael\Documents\NetBeansProjects\Pong\dis 
t\Pong.jar" 
Exception in thread "main" java.lang.NullPointerException 
     at javax.swing.ImageIcon.<init>(Unknown Source) 
     at pong.BallMainMenu.<init>(BallMainMenu.java:19) 
     at pong.Board.gameInit(Board.java:93) 
     at pong.Board.addNotify(Board.java:86) 
     at java.awt.Container.addNotify(Unknown Source) 
     at javax.swing.JComponent.addNotify(Unknown Source) 
     at java.awt.Container.addNotify(Unknown Source) 
     at javax.swing.JComponent.addNotify(Unknown Source) 
     at java.awt.Container.addNotify(Unknown Source) 
     at javax.swing.JComponent.addNotify(Unknown Source) 
     at javax.swing.JRootPane.addNotify(Unknown Source) 
     at java.awt.Container.addNotify(Unknown Source) 
     at java.awt.Window.addNotify(Unknown Source) 
     at java.awt.Frame.addNotify(Unknown Source) 
     at java.awt.Window.show(Unknown Source) 
     at java.awt.Component.show(Unknown Source) 
     at java.awt.Component.setVisible(Unknown Source) 
     at java.awt.Window.setVisible(Unknown Source) 
     at pong.Pong.<init>(Pong.java:16) 
     at pong.Pong.main(Pong.java:23) 
+2

應該問在計算器上,但應該很快就會遷移。如果你在發生錯誤的地方顯示你的'BallMainMenu'代碼,這將會有所幫助。 –

回答

0

您是否已將Java JDK和外部庫(.jar文件)添加到系統路徑變量中?

正如您使用的是Netbeans,您可以正確使用此源How to deploy Java Project using Netbeans。 要設置Java的系統路徑,請查看this鏈接。它可能會根據您的平臺而有所不同;即Windows,MacOS等

2

我懷疑你正在寫的文件的URL相對於工作目錄,這可能是不同的,當你在NetBeans中執行它(取決於你從哪裏執行它從你運行它時控制檯)。例如,當從netbeans項目運行這個工作目錄時,工作目錄很可能是C:\ Users \ michael \ Documents \ NetBeansProjects \ Pong,其他示例中工作目錄的位置僅僅是「C:\ Users \ michael \「

假設您正在從路徑」myimages/test.jpg「加載圖像。從netbeans運行時,這將變成「C:\ Users \ michael \ Documents \ NetBeansProjects \ Pong \ myimages \ test.jpg」,在另一個例子中它將變成「C:\ Users \ michael \ myimages \ test.jpg」 。

嘗試使用下面的訪問資源,而不是

getClass().getResource("/myimage/test.jpg"); 

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String