NullPointerException - dlaczego?


(Szczepi 86) #1

Witam. Mam pewien problem przy programowaniu w Javie. Pojawia mi się NullPointerException. Wiem co ten błąd oznacza, wiem z jakiej przyczyny się ten błąd pojawia, ale nie rozumiem czemu w moim kodzie on się pojawia, bo wydaje mi się że nie powinien. W moim kodzie znajduje się następująca linijka:

this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("weka/gui/weka_icon.gif")).getImage());

I to w niej Netbeans pokazuje NullPointerException. Co jest dość dziwne ponieważ pod podaną ścieżką znajduje się wspomniany gif. Sprawdziłem też w kodzie i wpisałem poniższą linijkę by sprawdzić czy wyświetli się null i niestety się wyświetla.

System.out.println(getClass().getResource("weka/gui/weka_icon.jpg"));

Zgupiałem bo już tysiąc razy sprawdziłem czy dana ścieżka jest dobra i czy jest tam ten obrazek. Wszystko się zgadza więc skąd NullPointerException? Czy jest coś o czym nie wiem?


(Airborn) #2

Prawdopodobnie mylisz adres względny z bezwzględnym. Sprawdź jak zachowa się program, gdy ścieżkę rozpoczniesz od "/" czyli:

this.setIconImage(new ImageIcon(getClass().getClassLoader().getResource("weka/gui/weka_icon.gif")).getImage());

Upewnij się również, że nie występują różnice w wielkości znaków.


(Razi) #3

Używasz Resource'ów, więc plik ten musi znajdować się w ClassPath. Najlepiej zbuduj najpierw .jar, potem uruchom.


(Szczepi 86) #4

Ok dzięki, sprawdzę to :slight_smile: