Может ли программа зависеть от библиотеки во время компиляции, но не во время выполнения?

Я понимаю разницу между временем выполнения и временем компиляции и то, как различать эти два понятия, но я просто не вижу необходимости делать различие между зависимостями времени компиляции и времени выполнения .

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

Я читал об инструментах разрешения зависимостей, таких как Ivy и Maven, и эти инструменты четко различают эти два типа зависимостей. Я просто не понимаю, зачем это нужно.

Может ли кто-нибудь дать простое объяснение типа "королевского английского", желательно с реальным примером, который мог бы понять даже такой бедняга, как я?

105
задан Ciro Santilli 新疆改造中心法轮功六四事件 19 June 2015 в 19:22
поделиться