java.lang.IllegalArgumentException: input == null!at javax.imageio.ImageIO.read (неизвестный источник) - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь установить изображение значка как

private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
  try {

        Image img=ImageIO.read(getClass().getResource("images/logo.png"));
        setIconImage(img);
    } catch (IOException ex) {
        System.out.println(ex.getMessage());
    }
}   

Код, кажется, прекрасно работает после компиляции в NetBeans, но я получаю исключение IllegalArgumentException, если я запускаю файл jar из cmd.Я не вижучтобы понять, как изображение может быть видно в первом случае, а не во втором.

1 Ответ

0 голосов
/ 04 декабря 2018

Это произойдет в Windows (файловая система без учета регистра), где загрузка может произойти, скажем, Images/Logo.PNG на распакованном пути к классам, и произойдет сбой при запуске из jar (zip-архив), где путичувствительны к регистру.

Исправление регистра файла может быть громоздким (контроль версий и т. д.), поэтому переименование может быть более полезным.

Примечания:

Если(фактический!) класс находится в пакете x.y.z, путь к каталогу в jar: x/y/z/images/logo.png.

Следовательно, альтернативы, которые следует учитывать, - это ссылка на недетский класс и абсолютный путь:

    Image img=ImageIO.read(Xyz.class.getResource("images/logo.png"));
    Image img=ImageIO.read(getClass().getResource("/u/v/w/images/logo.png"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...