Скомпилировать исходный файл в другой каталог?

Есть ли способ скомпилировать исходный файл Java (*.java) в другой каталог?

Если моя файловая структура пакета выглядит так:

Mathematics ->
  Formulas ->
    src ->
      // source files containing mathematical formulas...
    bin ->
      // class files containing mathematical formulas...
  Problems ->
    src ->
      // source files containing mathematical problems...
    bin ->
      // class files containing mathematical problems...

Я хочу разделить файлы источника и класса, чтобы сохранить папки, но в настоящее время мне приходится копировать все файлы классов из папок src папки bin после каждого компиляции.

Есть ли способ упростить этот процесс, скомпилировав файлы классов в другую папку в команде javac?

Ответ 1

Yup, абсолютно - используйте параметр -d чтобы указать выходной каталог:

javac -d bin src/foo/bar/*.java

Обратите внимание, что указанный вами каталог является корнем структуры вывода; соответствующие подкаталоги будут созданы автоматически, чтобы соответствовать структуре пакета вашего кода.

Подробнее см. Документацию javac.

В этом случае вам нужно будет выдать одну команду javac для компиляции формул, а другую - для компиляции проблем, хотя, возможно, используя каталог bin как часть пути к классам при компиляции проблем.

(Возможно, вам стоит подумать об использовании единой структуры источника, но разных пакетов, заметьте. Вы также должны рассмотреть возможность использования IDE, чтобы скрыть часть этой сложности от вас - это становится утомительным, делая все это вручную, даже если это не на самом деле сложно.)