Иллюстрированный самоучитель по Java

Размещение пакетов по файлам

То обстоятельство, что class-файлы, содержащие байт-коды классов, должны быть размещены по соответствующим каталогам, накладывает свои особенности на процесс компиляции и выполнения программы.

Обратимся к тому же примеру. Пусть в каталоге D:\jdkl.3\MyProgs\ch3 есть пустой подкаталог classes и два файла – Base.java и Inp2.java, – содержимое которых показано в листингах 3.1 и 3.2. Рис. 3.2 демонстрирует структуру каталогов уже после компиляции.

Мы можем проделать всю работу вручную.

  1. В каталоге classes создаем подкаталоги р1 и р2.
  2. Переносим файл Base.java в каталог р1 и делаем р1 текущим каталогом.
  3. Компилируем Base.java, получая в каталоге р1 три файла: Base.class, Inpl.class, Derivedpl.class.
  4. Переносим файл Inp2java в каталог р2.
  5. Снова делаем текущим каталог classes.
  6. Компилируем второй файл, указывая путь p2\Inp2.java.
  7. Запускаем программу java p2.inp2.

Вместо шагов 2 и 3 можно просто создать три class-файла в любом месте, а потом перенести их в каталог p1. В 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.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.