Как работает javac при импорте пакета? - PullRequest
0 голосов
/ 29 января 2019

У меня есть сомнения.
Насколько я понимаю, jdk имеет [jre + инструменты разработки (Java, javac, отладчик и т. Д.) + Исходный код (src.zip)].

Теперь работа Java-компилятора не имеет ничего общего с запуском файла класса.

Если я компилирую файл .java, откуда java-компилятор импортирует пакет?
Я могу найти пакеты в jre.
Если я не решу установить jre при установке jdk означает ли это, что я не смогу скомпилировать файл java с оператором импорта?

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Во-первых, как незначительное замечание, оператор типа

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.

0 голосов
/ 29 января 2019

Jdk = JRE + other tools like you mentioned. Когда вы компилируете свой Java-файл и используете встроенную библиотеку Java, она использует rt.jar для разрешения зависимостей, т.е. операторов импорта.Ниже приведена ссылка на разницу В чем разница между JVM, JDK, JRE и OpenJDK?

...