Иллюстрированный самоучитель по Java
Размещение
пакетов по файлам
То обстоятельство, что class-файлы,
содержащие байт-коды классов, должны быть размещены по соответствующим каталогам,
накладывает свои особенности на процесс компиляции и выполнения программы.
Обратимся к тому же примеру. Пусть
в каталоге D:\jdkl.3\MyProgs\ch3 есть пустой подкаталог classes и два файла
— Base.java и Inp2.java, — содержимое которых показано в листингах 3.1 и 3.2.
Рис. 3.2 демонстрирует структуру каталогов уже после компиляции.
Мы можем проделать всю работу вручную.
1. В каталоге classes создаем подкаталоги
р! и р2.
2. Переносим файл Base.java в каталог
р! и делаем р] текущим каталогом.
3. Компилируем Base.java, получая
в каталоге р! три файла: Base.class, Inpl.class, Derivedpl.class.
4. Переносим файл Inp2java в каталог
р2.
5. Снова делаем текущим каталог
classes.
6. Компилируем второй файл, указывая
путь p2\Inp2.java.
7. Запускаем программу
java p2.inp2.
Вместо шагов 2 и 3 можно просто
создать три class-файла в любом месте, а потом перенести их в каталог pi. В
class-файлах не хранится никакая информация о путях к файлам.
Смысл действий 5 и 6 в том, что
при компиляции файла Inp2.java компилятор уже должен знать класс
p1.Base
,
а отыскивает он файл с этим классом по пути p1.Base.class, начиная от текущего
каталога.
Обратите внимание на то, что в последнем
действии 7 надо указывать полное имя класса.
Если использовать ключи (options)
командной строки компилятора, то можно выполнить всю работу быстрее.
1. Вызываем компилятор с ключом
-d путь, указывая параметром путь начальный каталог для пакета:
javac -d classes
Base.java
Компилятор создаст в каталоге classes
подкаталог р1 и поместит туда три class-файла.
2. Вызываем компилятор с еще одним
ключом -classpath
путь,
указывая параметром путь каталог classes, в котором
находится подкаталог с уже откомпилированным пакетом pi:
javac -classpath
classes -d classes Inp2.java
Компилятор, руководствуясь ключом
-d, создаст в каталоге classes подкаталог р2 и поместит туда два class-файла,
при создании которых он "заглядывал" в каталог pi, руководствуясь
ключом -classpath.
3. Делаем текущим каталог classes.
4. Запускаем профамму java p2.inp2.
Рис. 3.2.
Структура каталогов
Рис. 3.3.
Протокол
компиляции и запуска программы
Для "юниксоидов" все это
звучит, как музыка, ну а прочим придется вспомнить MS DOS.
Конечно, если вы используете для
работы не компилятор командной строки, а какое-нибудь IDE, то все эти действия
будут сделаны без вашего участия.
На рис. 3.2 отображена структура
каталогов после компиляции.
На рис. 3.3 показан вывод этих действий
в окно
Command Prompt
и содержимое каталогов после компиляции.