Я понимаю разницу между временем выполнения и временем компиляции и как разграничить их, но я просто не вижу необходимости проводить различие между зависимостями времени компиляции и времени выполнения .
Что я задыхаюсь, так это: как программа не может зависеть от чего-то во время выполнения, от которой она зависела во время компиляции? Если мое приложение Java использует log4j, ему нужен файл log4j.jar для компиляции (мой код, интегрирующий и вызывающий методы-члены изнутри log4j), а также время выполнения (у моего кода нет абсолютно никакого контроля над тем, что происходит после кода внутри log4j.jar запущен).
Я читаю инструменты разрешения зависимостей, такие как Ivy и Maven, и эти инструменты четко различают эти два типа зависимостей. Я просто не понимаю, зачем это нужно.
Может ли кто-нибудь дать простое объяснение типа "King English", желательно с фактическим примером, который мог понять даже плохой сок, подобный мне?