Во-первых, как незначительное замечание, оператор типа
import java.util.List;
просто вводит аббревиатуру, позволяя вам использовать простое слово List
позже в вашем коде вместо полного имени класса java.util.List
,Поэтому не столько сам оператор import, сколько использование некоторого класса, подобного java.util.List
, требует некоторого объяснения.
Вы правильно понимаете, что для компиляции вашего Java-файла компилятору требуется некоторая информация о каждом классевы используете, и он обычно находит эту информацию в каком-то jar-файле, содержащем этот класс.
Теперь, где находится этот jar-файл, содержащий класс java.util.List
, который читает компилятор?Вы правы, это происходит из JRE, из rt.jar
, который является частью системного пути к классам (сам компилятор Java - это java-программа, которая сама нуждается в базовых классах, поэтому везде, где вы успешно запускаете javac
, вы всегдаrt.jar
доступно).
Если в вашем исходном коде используется класс из какой-либо другой библиотеки, вам придется указать эту библиотеку в командной строке javac
, используя параметр, подобный -cp
.