Как установить правильный путь к изображению в java?

Я пытаюсь загрузить и нарисовать его с помощью метода рисования в java, независимо от того, как я пишу путь, он всегда показывает исключение

java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)

У меня есть изображение в той же папке с классом

Это строка, в которую я загружаю изображение

    Image img = ImageIO.read(getClass().getResourceAsStream("pepsi.png"));

person Amado    schedule 19.06.2019    source источник
comment
Вы проверили эту ссылку   -  person soorapadman    schedule 19.06.2019
comment
Да, и я все еще получаю то же исключение, я пробовал каждое решение, написанное там   -  person Amado    schedule 19.06.2019
comment
Вы уверены, что файл находится в том же месте, что и файл Java? может находиться в другой папке класса, поместите его в ту же папку, где выполняется этот код класса.   -  person ilightwas    schedule 19.06.2019
comment
да они в одном месте   -  person Amado    schedule 19.06.2019


Ответы (3)


Ознакомьтесь с руководством MKYong. Он показывает вам, где разместить изображение. Если вы хотите, чтобы изображение загружалось как «ресурс», вы должны поместить его в папку ресурсов. Структура вашего проекта будет такой:

MyProject
    +--src
        +--main
            +--java
            |    +-com
            |       +--me
            |           +--Main.java
            +--resources
                 +--pepsi.jpg

и в вашем классе Main вы выполняете этот фрагмент:

try {
    Image img= ImageIO.read(Main.class.getClassLoader().getResourceAsStream("pepsi.jpg"));
    System.out.println(img.getWidth(null));  //this is just a test, when it prints out the width of your image, you have the right file loaded 
} catch (IOException ex) {
    Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
person GameDroids    schedule 19.06.2019

проверьте свою выходную папку... 'pepsi.png' (возможно, с учетом регистра) должен находиться в той же папке, что и файл класса, из которого вы звоните

person user3844834    schedule 19.06.2019
comment
это в той же папке, что я упомянул - person Amado; 19.06.2019

Попробуйте протестировать так.

Если файл находится в файле java, а мой класс находится в пакете с именем

net.ilightwas.MyClass

это должно быть похоже

Image img = ImageIO.read(getClass().getClassLoader().getResourceAsStream("net/ilightwas/pepsi.png"));

Возможно, это поможет вам найти ошибку.

person ilightwas    schedule 19.06.2019