2013-08-26 5 views
2

Я создаю объект, который получает изображение из пакета, чтобы затем нарисовать его на экране позже. Когда я запускаю код в netbeans, он работает нормально. Вне netbeans я получаю ошибку исключения нулевого указателя. Вот мой код. Я использовал часть println, чтобы убедиться, что «лягушка» равна нулю. Когда run говорит, что он равен «/images/upFrogStill.png», поэтому я не уверен, почему исключение нулевого указателя. Ошибка указана в строке «ImageIcon ii ...».Thread NullPointerException при запуске за пределами netbeans

public class Frog extends Sprite implements Commons { 

String frog = "/images/upFrogStill.png"; 

public Frog() { 
System.out.println("frog = " + frog); 
     ImageIcon ii = new ImageIcon(this.getClass().getResource(frog)); 
     image = ii.getImage(); 
     width = image.getWidth(null); 
     height = image.getHeight(null); 
     resetState(); 

} 
    void resetState() { 
    if(frog != null){ 
    frog = "/images/upFrogStill.png"; 
    x = 185; 
    y = 397; 
}} 
} 
+6

Убедитесь, что ресурс находится в вашем пути к классам на '/ images/upFrogStill.png'. Как запустить приложение за пределами netbeans? –

+0

Исходя из кода, похоже, что 'frog' может быть задан другим классом уровня пакета. Если это так, вы должны определить константу вместо двух разных строк, которые определяют путь. Если это не так, вы должны сделать финал 'frog', а затем вам не нужна проверка« null ». – unholysampler

+0

Файл изображения находится в пакете «изображения» netbeans и найден и отлично работает в netbeans. Я не могу сделать финал лягушки, поскольку он будет изменен на разные пути к файлу позже в игре, чтобы оживить лягушку. –

ответ

4

Существует высокая possiblilty что

ImageIcon ii = new ImageIcon(this.getClass().getResource(frog)); возвращается nullтак он не может найти ресурс.

Если вы работаете за пределами netbeans, убедитесь, что вы Включите этот файл в свой путь к классам.

ClassLoader.getResource is "absolute";

Class.getResource является по отношению к пакету класса, если вам приставкой его с '/'.

Надеюсь, это поможет.

Смежные вопросы