Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Ошибка при работе с ImageIcon под Linux


Автор: REDiez 30.9.2005, 17:53
Приветствую.
Проблема в следующем:
апплет запускается в Windows, но выдает ошибку при запуске в Linux - ругается на следующую строчку:
(приведен отрывок из цикла)
--------------------------------------------

// создаем кнопку (элемент матрицы кнопок)
Array_of_ButtonCtrl[i][j]=new JButton((new ImageIcon(ImageURL)));
где ImageURL описывается как
URL ImageURL=getClass().getResource("images/"+Arrows_pics[i][j]);

----------------------------------------------

в консоли выводится следующее:

java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at PanelControl.DrawButton(ShuraDriver.java:203)

203 - строчка как раз и приведена.)
-------------------------------------------------------

В чем может быть ошибка не понятно.
Под Windows все прекрасно работает, под Linux не хочет.)

Автор: LSD 30.9.2005, 21:14
Проблема в том что URL у тебя нулевой, вот и NullPointerException, а вот почему надо разбираться.
Вставь перед URL ImageURL=getClass().getResource("images/"+Arrows_pics[i][j]); печать "images/"+Arrows_pics[i][j] и где у тебя лежат картинки, не в jar-ре случайно?

Автор: REDiez 3.10.2005, 08:44
Картинки лежат не в jar-ре, а в каталоге, где лежит собственно сам проект.)


Автор: batigoal 3.10.2005, 09:01
Проверь пути, как советовал LSD. Обычно ошибка именно в них.

Автор: REDiez 3.10.2005, 09:34
Понятно, что дело в неправильном пути.)
Странно только, что в Windows все работает нормально, а под Linux как раз и ругается на неправильный путь.)
Может быть подругому пытаться загрузить картинку на кнопку? Если да, то подскажите как?

Автор: LSD 3.10.2005, 09:38
Попробуй чуть переписать код:
Код
URL ImageURL=getClass().getResource("./images/"+Arrows_pics[i][j]);


А то что Windows и Linux по разному могут интерпретировать один и тот же путь, так тут ничего странного.

Автор: REDiez 3.10.2005, 10:22
Не помогает.)

Автор: LSD 3.10.2005, 10:38
А регистр символов проверял? В Linux-е имена регистрозависимые.

Автор: REDiez 3.10.2005, 10:43
2 LSD: да, проверял, с регистром символов все в порядке все в порядке.

Автор: LSD 3.10.2005, 11:04
Ну тогда поподробней: полное имя класса для которго выполняется getClass() и где он лежит, где лежат картинки, и какая директория текущая?

Автор: REDiez 3.10.2005, 11:22
главный класс проекта: public class ShuraDriver extends JApplet
полное имя класса для которого выполняется getClass(): class PanelControl extends JPanel;
текущая директория, где лежат все файлы проекта: (для Linux) www/
картинки лежат www/images/

Автор: LSD 3.10.2005, 11:43
Под полным именем класса я подразумевал имя с именем пакета (наподобие java.lang.Object). Я так понял, пакеты ты не используешь.

Попробуй сформировать URL, так (сработает или нет):
Код
URL ImageURL = new File("images/"+Arrows_pics[i][j]).toURL();
System.out.println("URL: " + URL);

Автор: REDiez 3.10.2005, 12:25
все равно не помогает.)
Я запускаю свой проект удаленно (Linux установлен на другом компе), и вот что выводится в консоли:
URL: https://195.89.98.169/~shura/images/left_up.gif
URL: https://195.89.98.169/~shura/images/up.gif
URL: https://195.89.98.169/~shura/images/right_up.gif
URL: https://195.89.98.169/~shura/images/left.gif

Автор: LSD 4.10.2005, 19:06
Картинки не открываются.

Я сегодня попробовал под линуксом выполнить:
- создал в текущем каталоге подкаталог img и в него положил файлик test.txt
- выполнил следующий код:
Код
URL ImageURL = new File("img/test.txt").toURL();
System.out.println("URL: " + URL);

все прекрастно сработало и я получил URL файла, так что у тебя проблема не Java. Надо разбираться с путями.

P.S. А картинки можно и на форуме крепить.

Автор: REDiez 7.10.2005, 17:38
Я нашел ошибку. Все прекрасно работает.)
Ошибка была в том, что имя одного файла начиналось с большой буквы.)
Так что ты был прав по поводу регистров букв.
Спасибо за помощь.
Удачи.

Автор: LSD 7.10.2005, 22:39
Да не за что. Заходи еще, будем рады smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)