Загрузить файл из ресурса

Пытаюсь выполнить код:


        URL url4 = Main.class.getResource("/test.dat"); //null
        URL url = Main.class.getResource("/test.png"); //успешно
        URL url2 = Main.class.getResource("/test.bmp"); //null
        URL url3 = Main.class.getResource("/test.txt"); //null

Оно, что, только с PNG работает? :dizzy_face: Почему PNG?

Так а ресурсы как созданы?
Видимо там просто нет остальных файлов )

Файлы просто лежат в папке project_dir/src. Если я правильно понял, это и есть ресурсы.
Если это не ресурсы, то мне надо загрузить файл из папки project_dir/src (или из корня скомпилированного jarа).

Обычно они в папке resources.

Java - Read a file from resources folder - Mkyong.com

Если перенести файлы в папку resources, то даже PNG перестаёт грузиться.

А проект как устроен, Maven (pom.xml), Gradle или что?
Как запускается?

Обычный hello world Java-проект

project_dir/project_name.iml
project_dir/src/com/Main.java
project_dir/src/test.png
project_dir/src/test.bmp
project_dir/src/test.dat
project_dir/src/test.txt

Грубо говоря, F9 ENTER :grinning:
Тут просто ничего больше не надо. Проект тестовый.

Ну это тогда от IDE зависит, что она делает при запуске такого проекта.

Если создать Maven проект, то должно работать как по ссылке.

Мне Maven не нужен.

Но ведь PNG грузится и любой директории. Что с ним не так?
во! :dizzy_face: А если папка resources лежит в папке project_dir/src, тогда всё грузится

        URL url4 = Main.class.getResource("/resources/test.dat");
        URL url = Main.class.getResource("/resources/test.png");
        URL url2 = Main.class.getResource("/resources/test.bmp");
        URL url3 = Main.class.getResource("/resources/test.txt");


Похоже, файлы должны лежать в любой директории, кроме корневой.

        URL url4 = Main.class.getResource("/aaa/test.dat");
        URL url = Main.class.getResource("/aaa/test.png");

Тогда работает. Но PNG грузится из корня тоже.
Почему? :dizzy_face:

Просто если в корневой, тогда не:

URL url4 = Main.class.getResource("/test.dat");

а наверное так:

URL url4 = Main.class.getResource("test.dat");

без слеш

если без слеша, то файлы должны лежать в корне проекта:

project_dir/test.png 

Это я где-то в гугле находил