2015-08-17 3 views
1

Предположим, у вас есть простая Java-программа Hello world, которая использует внешний пользовательский класс. Когда вам понадобится этот .jar? Во время компиляции или во время выполнения?Внешняя jar dependcy в java, время компиляции и время выполнения

Меня спросили в недавнем интервью, и я ответил на оба вопроса.

Позже я подумал, что для компиляции нам нужно только определение класса (т. Е. Имена методов, имена переменных) и т. Д. Но можем ли мы это сделать без .jar?

ответ

1

Во время компиляции вам нужен либо исходный файл класса (и скомпилировать все вместе), либо файл .class (скомпилированный файл) в вашем пути сборки. Это может быть достигнуто без файла .jar, если ваш внешний .class-файл также не имеет других зависимостей.
Файл jar может использоваться для времени компиляции, для времени выполнения или для обоих. Это зависит от того, какая у вас зависимость. Например, он необходим во время компиляции и не нужен во время выполнения, потому что вы запускаете приложение в управляемой среде (например, сервере приложений), которая уже имеет банку (или ее версию). Вы нуждались в нем непосредственно во время выполнения, если, например, ваш код выполняет некоторую загрузку динамического класса (например, java.sql.DriverManager делает это при загрузке класса драйвера SQL).
И, конечно, наиболее распространенный случай, когда это необходимо как при компиляции, так и во время выполнения.

1

Во время работы вам всегда нужна банка.

Во время компиляции в среде devolopping (например, eclipse) файл флага не требуется. Существуют другие механизмы (настройка встроенных ванн), доступные для поиска класса. Если проект скомпилирован с использованием скрипта сборки, такого как ant, требуется внешняя банка.

Смежные вопросы