2016-05-03 2 views
-1

Хорошо, я пробовал много ответов из разных ресурсов, но мой код все еще не работает. (и я действительно не понимаю, как это работает)Буферизованное изображение в файле jar с использованием java

Это похоже на то, что папка, содержащая мои java-файлы, находится под Desktop/code , и у меня есть пакет с именем package.name, который содержит папку всех изображений я пытаюсь загрузить ...

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

Таким образом, «образ» папка, которая имеет все фотографии, которые мне нужны

Это мой код для изображения изображений:

g2.drawImage(getPicture("/package.name/image/"+1+".png"), x, y, 200, 200, null); 

и у меня есть метод для буферизации изображений:

public BufferedImage getPicture(String filename) { 
     try { 
      File fp = new File(filename); 
      BufferedImage pic = ImageIO.read(getClass().getResourceAsStream(filename));   
      return pic; 
     } 
     catch (Exception e) { 
      JOptionPane.showMessageDialog(null, "Unable to read file!", "File Error", JOptionPane.ERROR_MESSAGE); 
      return null; 
     } 
    } 

всякий раз, когда я пытаюсь запустить его в терминале, мой код просто выдаст диалоговое окно сообщения, я пытаюсь компилировать его в jar, и он тоже не работает.

+0

* Что * класс исключение и сообщение? –

+0

@BrianAgnew исключение - это java.lang.IllegalArgumentException: input == null! –

ответ

0

Вы получаете NullPointerException справа ?? (Мой хрустальный шар говорит, что вы делаете)

Вы должны загрузить изображение без точек . и только слэши / так:

g2.drawImage(getPicture("/your/package/name/image/"+1+".png"), x, y, 200, 200, null);

Edit: Вы получаете IllegalArgumentException не NPE - этот ответ остается в силе как причина одна и та же - null вернулся с getResourcesAsStream().

Если каталог image находится в корне контекста, то в default упаковке, и вы должны ommit в /your/package/name и использовать только image/1.png, например

+0

точка является частью имени папки, следует ли удалить /package.name? –

+0

Извините, что вы понимаете под корень контекста? –

+0

если у вас есть пакет типа 'my.app.main', то ваши каталоги будут выглядеть так:' my/app/main'. Корневой контекст - это каталог уровня топа вашего приложения, поэтому он будет каталогом, который содержит каталог 'my';) – Antoniossss

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

  • Нет связанных вопросов^_^