2016-06-26 2 views
0

Я пытаюсь загрузить изображение, и он отлично работает в eclipse. Однако при выполнении компиляции он сбрасывается с вводом == null. Метод получения значка здесь:ввод == null при загрузке изображения

public ImageIcon getIcon(String iconName){ 
    InputStream imageStream = this.getClass().getClassLoader().getResourceAsStream("images"+File.separator+iconName); 
    InputStream t = this.getClass().getClassLoader().getResourceAsStream("images"); 

    Image image = null; 
    try 
    { 
     image = ImageIO.read(imageStream); 
     return new ImageIcon(image); 
    } 
    catch(IOException e){ 
     return null; 
    } 
    catch(IllegalArgumentException e){ 
     System.out.println(e.getMessage()); 
     System.out.println("Image folder stream: Im"+t); 
     System.out.println("Image folder + image stream: "+imageStream); 
     return null; 
    } 
} 

выход консоли:

input == null! 
Image folder stream:sun.net.www.protocol.jar.JarURLConnection[email protected] 
Image folder + image stream: null 
input == null! 
Image folder stream:[email protected]e634 
Image folder + image stream: null 

Я читал другие темы, с той же ошибкой, как и я, но я не был в состоянии решить ее , Любая помощь была бы оценена, спасибо

+0

Попробуйте использовать полный путь к изображению вместо относительного пути. – sreisman

+2

Во-первых, getResourceAsStream() ожидает пути '/' -separeted. Поэтому вы не должны использовать File.separator, но '/'. Во-вторых, каково значение iconName, какова структура вашего проекта, как вы создаете и запускаете свою программу, и где находится значок, расположенный в этой структуре? –

+0

О, ничего себе. заменив File.separator на/fixed. Спасибо за помощь, опубликуйте его как ответ, если хотите. –

ответ

2

getResource[AsStream]() ожидает / -расширенный путь. Всегда. Независимо от вашей платформы. Не используйте File.separator. Используйте /.

1

Это почти наверняка проблема с вашим курсом.

Переменная imageStream имеет значение null, поэтому ваш загрузчик классов не находит файл и загружает его. Оттуда метод обречен на провал.

При работе в среде IDE Eclipse поможет вам настроить пути, то есть будет работать нормально. Когда вы запускаете его в командной строке, вам нужно убедиться, что ваш путь к классам соответствует Eclipse.

Я предполагаю, что у вас есть папка «images», которая содержит ваши различные изображения, но доступна ли это в вашем скомпилированном JAR или как элемент в вашем пути к классам в вашей команде запуска?

+0

Да, у меня есть папка с изображениями, и это было прекрасно скомбинировано в банку. Тем не менее, ответ JB Nizet решил проблему для меня, спасибо, что написал ответ. –

Смежные вопросы