Поиск пакетов и переменная среды CLASSPATH

Как было сказано в предыдущем разделе, пакеты отображаются на каталоги. Это обстоятельство порождает важный вопрос: откуда системе времени выполнения Java известно, где следует искать создаваемые пакеты? Ответ на него состоит из следующих частей: во-первых, по умолчанию в качестве отправной точки система времени выполнения Java использует текущий рабочий каталог. Следовательно, если пакет находится в подкаталоге текущего каталога, он будет найден. Во-вторых, путь или пути к каталогу можно указать, устанавливая значение переменной среды CLASSPATH. В-третьих, java и javac можно использовать с параметром -classpath, указывающим путь к классам. Например, рассмотрим следующую спецификацию пакета:

package MyPack;

Чтобы программа могла найти пакет MyPack, должно выполняться одно из следующих двух условий. Либо программа должна выполняться из каталога, расположенного непосредственно над каталогом MyPack, либо переменная среды CLASSPATH должна содержать путь к каталогу MyPack, либо параметр -classpath должен указывать путь к каталогу MyPack во время выполнения программы с помощью java.

При использовании двух последних способов путь класса не должен содержать сам пакет MyPack. Он должен просто указывать путь к этому каталогу. Например, в среде Windows, если путь к каталогу MyPack имеет вид:

С:\MyPrograms\Java\MyPack

то путь класса к MyPack будет выглядеть так:

С:\MyPrograms\Java

Простейший способ проверки примеров, приведенных в этой книге — просто создание каталогов пакетов в текущем каталоге разработки, помещение файлов .class в соответствующие каталоги и последующий запуск программ из каталога разработки. В следующем примере использован именно этот подход.