2016-12-17 5 views
-2

Да, это дубликат вроде 100 разных сообщений, , но ни одно из решений для меня не работало.Вход == null в ImageIO.read

Путь я определяю картины в моей игре это:

FRONTPAGE = ImageIO.read (новый файл ("frontpage.png"));

Он до сих пор работал, но теперь, Я экспортирую его в качестве файла jar и преобразовывая его в exe с помощью Jar2Exe. У меня никогда не было проблем с этим.

Однако, чтобы экспортировать его и сделать его доступным для чтения, я могу изменить его на:

FRONTPAGE = ImageIO.read (. This.getClass() getResource ("/ frontpage.png"));

Сейчас я получаю эту ошибку:

java.lang.IllegalArgumentException: input == null! 
    at javax.imageio.ImageIO.read(Unknown Source) 
    at com.teamxf.Game.<init>(Game.java:80) 
    at com.teamxf.Game.main(Game.java:62) 

Линия 80 является выше линии, где я определяю Frontpage.

Строка 62, где я вызываю конструктор в основном методе. Я определяю изображения в конструкторе.

В чем причина этой проблемы?

Редактировать: У меня такая же ошибка в eclipse при ее запуске.

+1

Собираете ли вы изображение с банкой? – Marv

+0

@Marv Да. Я должен был добавить это, но он говорит об этом и в Eclipse. – joey942

ответ

1

new File() полностью отличается от getResource(). Первый загружает файл из файловой системы, а последний загружает его из пути к классам. Оба метода могут давать одинаковые результаты при запуске вашего приложения из среды IDE, но запуск из упакованной банки требует, чтобы ресурсы находились в пути к классам, что обычно означает, что они должны находиться внутри банки. Если вы используете Maven как инструмент сборки, вам просто нужно разместить свои ресурсы в src/main/resources, чтобы добавить их в свою банку.