Ответ 1
Javac документация содержит всю необходимую информацию. Однако было бы полезно использовать Ant или Maven для построения командной строки.
Эта страница служит хорошим примером использования первого javac, а затем Ant для создания простого проекта.
Вот пример проекта и как его можно скомпилировать с помощью javac.
Древовидная структура проекта такова:
.
├── build
└── src
├── attacks
├── drivers
│ └── Driver.java
└── exceptions
└── MyException.java
Существует два специальных каталога - build
для хранения скомпилированных классов и src
для размещения исходных файлов (может быть в разных подкаталогах - пакетах).
Следующая команда компилирует весь проект и помещает результат в каталог build
.
javac -sourcepath src -d build src/**/*.java
-sourcepath src
указывает каталог src
как место, где весь источник может быть найден компилятором. Опция -d build
сообщает компилятору, куда поместить скомпилированные файлы.
Опция src/**/*.java
сообщает компилятору, какие файлы нужно компилировать. В этом конкретном случае он сообщает javac посмотреть два уровня вниз и выбрать все *.java на этом уровне.
Если существуют файлы *.java
на разных уровнях, необходимо указать список файлов. Для этого можно создать такой список как внешний файл и передать эти файлы, как в опции ввода для javac
.
Вот как это можно сделать в Linux/Unix:
find -name "*.java" > source.txt
Вышеупомянутая команда создает файл source.txt, содержащий полные пути для найденных *.java файлов. В этом примере он содержит:
./src/drivers/Driver.java
./src/exceptions/MyException.java
Чтобы скомпилировать проект со списком исходных файлов, сброшенных в source.txt
, можно использовать следующую команду:
javac -d build @source.txt
Обратите внимание, что @source.txt
указан в конце, который сообщает компилятору, где искать список исходных файлов. Также обратите внимание, что параметр -sourcepath
можно опустить.
Вот как структура каталогов изменилась после выполнения указанной выше команды.
.
├── build
│ ├── drivers
│ │ └── Driver.class
│ └── exceptions
│ └── MyException.class
└── src
├── attacks
├── drivers
│ └── Driver.java
└── exceptions
└── MyException.java
Как можно заметить, каталог build
теперь содержит скомпилированные файлы классов в соответствующих пакетах.
И если вы хотите запустить его, предположив, например, что Driver
имеет метод main
, следующая программа выполняет программу.
java -cp .:build:**/*.class drivers.Driver
Обратите внимание, что в Unix используется разделитель файлов :
(двоеточие), для Windows его можно изменить на ;
(точка с запятой).