2013-06-27 104 views
0

我正在用Java編寫基於小程序的遊戲,但我遇到了一個問題。我得到一個空指針異常與下面的堆棧跟蹤:Java Applet getImage給出空指針異常

at java.applet.Applet.getAppletContext(Applet.java:204) 
at java.applet.Applet.getImage(Applet.java:274) 
at ImageEntity.load(ImageEntity.java:84) <==lowest code written by me 
at SpriteTest.<init>(SpriteTest.java:14) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
at java.lang.Class.newInstance0(Class.java:374) 
at java.lang.Class.newInstance(Class.java:327) 
at sun.applet.AppletPanel.createApplet(AppletPanel.java:795) 
at sun.applet.AppletPanel.runLoader(AppletPanel.java:724) 
at sun.applet.AppletPanel.run(AppletPanel.java:380) 
at java.lang.Thread.run(Thread.java:722) 

在ImageEntity.java線84的代碼如下:

image = applet.getImage(getURL(filename)); 

進行測試打印,applet不爲空,也不是getURL(filename)

印刷getUrl(filename)返回file:/home/glenn/Documents/code/RMGame/RMPatrolGame/house7.gif

爲什麼我得到一個空指針異常?

+0

geturl返回什麼 – Abubakkar

+0

我猜getUrl(filename).getContent()也會失敗。這可能是返回的URL不正確(可能爲空)或文件無法訪問的問題。 – mikeslattery

+0

爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

2

下面是java.applet.Applet.getAppletContext(Applet.java:204)的代碼:

public AppletContext getAppletContext() { 
    return stub.getAppletContext(); 
} 

'存根' 爲空。 AppletPanel.runLoader()來電setStub()

你的代碼在Applet有機會初始化之前調用getImage(即stub仍爲null)。 ()方法中調用getImage()。不要在構造函數中或在字段初始化期間調用它。