ImageIO.read(getClass().getResource(imgStr)) возвращает null в JAR

У меня проблема с загрузкой изображений в файл JAR. Я использую :

BufferedImage img = ImageIO.read(getClass().getResource(imgStr));

Где imgStr имеет вид «/xxxx.png».

У меня есть два разных изображения .png в одном месте. Одно изображение, скажем, /x.png загружается нормально. Другое изображение /y.png дает ошибку:

java.lang.IllegalArgumentException: input == null

Я не могу найти этому причину. Как ни странно, в среде Eclipse все работает нормально.

Может ли это быть как-то связано с прозрачностью изображений?

У кого-нибудь есть идея??

Заранее спасибо.


person njun    schedule 12.12.2018    source источник
comment
Вы можете назвать настоящее имя x и y?   -  person Steven    schedule 12.12.2018
comment
/H4000_1.png и /Cancel — это имена. Первый выдает и ошибка, второй нет.   -  person njun    schedule 12.12.2018
comment
Ну, я бы убедился, что символ '_' не вызывает никаких проблем (вероятно, нет). Вы абсолютно уверены, что вводите правильное имя файла в imgStr?   -  person Steven    schedule 12.12.2018
comment
Да, я уверен. Я забыл упомянуть одну вещь. В среде eclipse все работает нормально. Проблема возникает только в JAR!   -  person njun    schedule 12.12.2018
comment
Теперь я попытался удалить _ в имени, но это ничего не изменило.   -  person njun    schedule 13.12.2018


Ответы (1)


Итак, проблема заключалась в том, что некоторые из файлов были .PNG заглавными буквами. По-видимому, некоторые программы сохраняют как «.png», а другие как «.PNG».

person njun    schedule 13.12.2018