Ключи classpath и sourcepath в Java - Вопросы

Всего: 5 вопросов

1. 

Что такое classpath и где команды java и javac ищут классы?

Classpath — это список каталогов, в которых команды java и javac ищут нужные .class-файлы. Обе команды используют один и тот же список и просматривают его в одном и том же порядке: сначала каталоги классов Java SE, затем каталоги, заданные в classpath. Как только нужный класс найден, поиск прекращается — если классов с одинаковым именем несколько, используется первый найденный.

2. 

Какими способами можно задать classpath и какой используется по умолчанию?

Classpath можно задать двумя способами: как переменную окружения CLASSPATH (используется по умолчанию) и как ключ -classpath (или -cp) команд java и javac. Ключ -cp переопределяет переменную окружения, но только для одного конкретного вызова, и считается более предпочтительным и предсказуемым способом.

3. 

Чем отличается ключ -sourcepath от -classpath?

Ключ -sourcepath указывает компилятору javac, где искать исходные .java-файлы, на которые ссылается компилируемый класс. Ключ -classpath (или -cp) указывает, где искать готовые скомпилированные .class-файлы и библиотеки — его используют и javac, и java.

4. 

Почему возникает ошибка вроде NoClassDefFoundError или ClassNotFoundException и как её избежать?

Такая ошибка возникает, когда JVM или компилятор не может найти нужный .class-файл, потому что каталог или JAR с этим классом не указан в classpath. Чтобы этого избежать, добавьте нужный каталог или JAR в ключ -cp. Помните: как только используется ключ -cp, текущий каталог перестаёт входить в classpath по умолчанию — чтобы добавить его, укажите точку явно, например -cp .;../projectExample2/classes.

5. 

Как указать несколько каталогов в ключе -cp или -sourcepath?

Каталоги перечисляются в одном значении через системный разделитель путей: на Windows — точка с запятой (;), на Linux и macOS — двоеточие (:). Например, на Windows: -cp classes;../projectExample2/classes; на Linux/macOS: -cp classes:../projectExample2/classes.

Страница 1 из 1