2013-06-27 5 views
0

Я делаю апплетовую игру на Java, но у меня проблема. Я получаю исключения нулевого указателя со следующей трассировки стека:Java-апплет 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-адресом (вероятно, null) или недоступным файлом. – mikeslattery

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

2

Вот код для java.applet.Applet.getAppletContext (Applet.java:204):

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

'заглушкой' равно нулю. AppletPanel.runLoader() звонки setStub().

Ваш код вызывает getImage до того, как у апплета была возможность инициализировать (т. Е. Заглушка по-прежнему равна нулю).

Вызов getImage() в методе init(). Не вызывайте его в конструкторе или во время инициализации поля.