2013-07-21 2 views
0

Привет, я пытаюсь получить доступ к файлам изображений из моей папки SRC, чтобы я мог запускать его прямо из банки. К несчастью, не загружая их, могу ли я, пожалуйста, помочь. Это исключение нулевого указателя и не может прочитать входной файл. вот расположение папки и то, что я положил в код. CODE: «/sprites/mapsheet2.png» Directory: C: \ Users \ Lucas \ workspace \ Vigilante \ src \ sprites \ mapsheet2.png, если вам нужна дополнительная информация, скажите мне и сообщите ее.Как я могу получить доступ к файлам в папке SRC?

+0

* любая дополнительная информация * - Код Пожалуйста. –

+0

* Если вам нужна дополнительная информация, сообщите мне и сообщите об этом. * Поместите соответствующий код, а не просто объясните проблему. –

+0

Ответы правильны, насколько они подходят, но я считаю, что у вас может быть другая проблема. Когда вы создаете файл jar, система сборки _know_ должна включать эти конкретные ресурсы? Обычно конфигурация системы сборки будет иметь опции для указания того, какие типы ресурсов следует включать в банку. –

ответ

0

Ресурсы .jar файл может быть загружен с: getClass().getResource() возвращает URL с правильного пути

Image icon = ImageIO.read(getClass().getResource("image´s path")); 
+0

Исключение из потока "main" java.lang.IllegalArgumentException: input == null! \t at javax.imageio.ImageIO.read (Неизвестный источник) \t на Graphics.spritesheet. (spritesheet.java:21) \t at Tile.Tile. (Плитка.java: 11) \t у Tiles.Wall. (Wall.java:10) \t на Tiles.tiles. (tiles.java:7) \t у Core.core. (core.java:31) \t у Core.core.main (core.java:240) – user2551633

+1

Не помещайте выходные данные в комментарий. Он не читается. Вместо этого [edit] (http://stackoverflow.com/posts/17774984/edit) задайте вопрос о включении вывода и используйте форматирование кода на нем. Для этого выберите образец и нажмите кнопку '{}' над формой отправки сообщений/редактирования. –

0

Вы можете упаковать все необходимые ресурсы в .jar архива. И доступ к нему с использованием

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("res\file.img") 

может использовать imageIO для преобразования в изображение.

+0

защищенный spritesheet s = новый спрайт ("/ спрайты/Blocks.png"); – user2551633

0

Вы можете попробовать загрузить изображение как ByteArrayInputStream в BufferedImage. Что-то вроде этого: BufferedImage img = null; try { BufferedInputStream sc = new BufferedInputStream (ImageLoad.class.getResourceAsStream (файл)); ArrayList in = new ArrayList(); байт b = null; while ((b = sc.read)! = Null) in.add (b); byte [] байты = новый байт [in.size()];
for (int i = 0; i < in.size(); i ++) байты [i] = in.get (i); img = ImageIO.read (новый ByteArrayInputStream (байты)); } catch (исключение e) {}

, а затем просто используйте изображение по мере необходимости! Единственное, что вы должны иметь sprites/mapsheet2.png в той же папке, что и класс, из которого вы его запускаете. Скажем, что ваш класс - ImageLoad.java, ImageLoad.java должен быть в том же пакете, что и sprites/mapsheet2.png. EC:

ImageLoad.java в пакете image.load, в пакете image.load - это спрайты ресурсов (A Dir) и спрайты/mapsheet2.png, а также для любых других изображений, необходимых для загрузки в этой области , Если вы хотите загрузить изображение и использовать его в другом классе, вы можете просто создать метод, включающий вышеуказанный код, и вернуть bufferedImage. EC:

public class ImageLoad { 
     public static BufferedImage load(String file) throws Exception{ 
       BufferedInputStream sc = new BufferedInputStream(ImageLoad.class.getResourceAsStream(file)); 
       ArrayList<Byte> in = new ArrayList<Byte>(); 
       byte b = null; 
       while((b = sc.read) != null)in.add(b); 
       byte[] 
       bytes = new byte[in.size()];      
       for(int i = 0; i < in.size(); i ++)bytes[i] = in.get(i); 
       return ImageIO.read(new ByteArrayInputStream(bytes)); 
        } 
       } 
+0

Я не думаю, что метод является ошибкой, которую он прочитал, совершенно отлично, прежде чем я попытаюсь прочитать его из SRC. – user2551633

+0

Держите его исправленным, спасибо всем за вашу быструю и надежную помощь. гениальное сообщество. – user2551633

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