Разница между методами ClassLoader и getResource() в Java заключается в том, как интерпретируются относительные пути к ресурсам. 12
Методы ClassLoader обрабатывают относительные пути так, как если бы они были абсолютными: разрешают их в «корневой папке» пространства имён classpath. 12 Путь к ресурсу отсчитывается не от каталога, содержащего данный class-файл, а от одного из каталогов, указанных в переменной CLASSPATH. 3
Метод getResource(), в свою очередь, пытается найти ресурс в том же пакете, что и вызывающий класс. 14 Если путь к ресурсу не начинается с «/», то файл ищется в том же пакете класса. 5
Таким образом, методы ClassLoader подходят для работы с ресурсами, которые находятся в разных каталогах, а метод getResource() — для ресурсов, размещённых в одном пакете с вызывающим классом.