Линия
andImg = ImageIO.read(getClass().getResource("gate_and.png"));
не работает с
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
Я использую Eclipse и в режиме навигации под папкой bin находится файл gate_and.png, предполагающий, что файл находится в пути сборки.
В представлении проводника пакета у меня есть
project/src/view/class - это класс, который имеет код выше.
и
проект/изображения/gate_and.png
Я щелкнул правой кнопкой мыши по папке проектa > путь сборки > источник ссылки, чтобы добавить папку изображений в качестве источника. Выполнение этого снова дает подтверждение msg, в котором говорится, что изображения уже находятся в источнике.
Я также попытался изменить gate_and.png на images/gate_and.png и /images/gate _and.png, но поскольку изображение gate_and.png находится в папке bin, я думаю, что оригинал верен.
Я новичок в этом, и я посмотрел на подобные вопросы, которые задавали много, но ни один из них не предоставил мне решение.
Заранее благодарим за помощь.
Matt
Предполагая, что ваш класс находится в пакете view.random.name
, тогда
getClass().getResource("gate_and.png")
будет искать ресурс в
/view/random/name/gate_and.png
относительно корня пути к классам. У вас, видимо, нет ресурса по этому имени.
Установив project/images
в качестве записи пути построения, Eclipse будет включать все в него в путь к классам. Поэтому ваш ресурс появится в
/gate_and.png
Вы можете получить к нему доступ с помощью
getClass().getResource("/gate_and.png")
Обратите внимание на ведущий /
, который означает начало поиска корня пути к классам, т.е. это абсолютный путь.
Все эти правила объясняются в javadoc.
/gate_and.png
.