Структура файла:
\a
programme.class
programme.java
\b
text.txt
Имея мой текущий каталог в \ a (что также означает, что путь к классу по умолчанию также установлен в \ a) и имея это для моего кода (для целей тестирования):
System.out.println(programme.class.getClassLoader().getResource("b/text.txt"));
Запуск моей программы из папки \ a не требует от меня указания classpath для b. Следовательно, я могу запустить свою программу просто так: java program
Теперь я подумал, что добавление каталога в classpath (в нашем случае по умолчанию classpath - user.dir aka \ a) не разрешает подкаталоги (не добавляет их рекурсивно в classpath).
Как загрузчик классов находит файл b \ text.txt в classpath?