Для того чтобы механизм пакетов можно было корректно использовать, должны выполняться два условия.
· Поиск класса должен начинаться с одного из каталогов, указанных в качестве значения переменной окружения CLASSPATH.
· Иерархия каталогов должна соответствовать иерархии пакетов.
Если на вашем компьютере установлен JDK, обратите внимание на содержимое файла autoexec.bat. Вы найдете в нём строку приблизительно такого содержания:
SET CLASSPATH=.;C:\JDK1.1\CLASSES;C:\JDK1.1\LIB\CLASSES.ZIP
Как видите, в качестве значения переменной окружения CLASSPATH указаны текущий каталог, каталог C:\JDK1.1\CLASSES и файл C:\JDK1.1\LIB\CLASSES.ZIP. Предположим, что в файл, содержащий исходный текст программы, включена следующая строка:
import java.applet.*;
В этом случае поиск классов для импортирования производится следующим образом. Вначале проверяется текущий каталог. Поскольку иерархия каталогов должна соответствовать иерархии пакетов, классы и пакеты, содержащиеся в пакете java, должны находиться в каталоге с именем java. Если такою каталоги нет, поиск продолжается в каталоге C:\JDK1.1\CLASSES. Если и там нет каталога с именем java, проверяется файл C:\JDK1.1\LIB\CLASSES.ZIP.
В файле CLASSES.ZIP находится архив, в котором сохранена структура каталогов. Ввиду того что длина большинства файлов, содержащих описание классов, выражается трехзначными числами, хранение классов в виде архиве, позволяет эффективнее использовать дисковое пространство.
Если бы классы хранились в обычных, не архивированных файлах, они заняли бы в несколько раз больше места на диске.
| |
Оперативно распаковывая содержимое архива, средства поддержки пакетов Java обнаруживают каталог с именем java. В этом каталоге находится подкаталог с именем applet. Содержимое этого подкаталога и должно быть импортировано.
Итак, проверка наличия пакета, по существу, сводится к проверке наличия подкаталога с указанным именем.