Pode um programa depender de uma biblioteca durante a compilação, mas não o tempo de execuçã

Entendo a diferença entre tempo de execução e tempo de compilação e como diferenciar os dois, mas não vejo a necessidade de fazer uma distinção entre tempo de compilação e tempo de execuçã dependências.

O que eu estou engasgando é o seguinte: como pode um programanot depend em algo em tempo de execução do qual dependia durante a compilação? Se meu aplicativo Java usa log4j, ele precisa do arquivo log4j.jar para compilar (meu código integrando e chamando métodos membros de dentro de log4j) e também tempo de execução (meu código não tem absolutamente nenhum controle sobre o que acontece quando o código dentro de log4j .jar é executado).

Estou lendo sobre ferramentas de resolução de dependências, como Ivy e Maven, e essas ferramentas fazem claramente a distinção entre esses dois tipos de dependências. Eu simplesmente não entendo a necessidade diss

Alguém pode dar uma explicação simples do tipo "inglês do rei", de preferência com um exemplo real que até um pobre coitado como eu possa entende

questionAnswers(9)

yourAnswerToTheQuestion