2013-08-28 3 views
0

Я пытаюсь скомпилировать Java-проект из командной строки. Проект содержит файлы классов в разных пакетах. Программа компилируется и работает нормально, если я укажу каждый java-файл каждого пакета. Вот моя структура каталогов:Автоматическая сборка нескольких пакетов java

toplevel/ 
    mainFile.java 
    level1/ (Contains fileA.java) 

Теперь, если я javac -classpath ./toplevel toplevel/mainFile.java toplevel/level1/fileA.java, это компилируется нормально и я могу запустить его с java toplevel/mainFile. Теперь, если создать новую папку под названием «level2» в ровном1 и создать класс «B» внутри него, новая структура каталогов становится:

toplevel/ 
    mainFile.java 
    level1/ (Contains fileA.java) 
     level2/ (Contains fileB.java) 

Для компиляции этого я должен сделать: javac -classpath ./toplevel toplevel/mainFile.java toplevel/level1/fileA.java toplevel/level1/level2/fileB.java, которая становится смешной. Есть ли инструкция, которая рекурсивно компилирует каждый пакет и файлы внутри него?

+1

Почему бы не использовать инструмент сборки, например ant или maven? Это будет тривиально с ними. – rocketboy

+1

Возможный повтор [javac вариант для компиляции рекурсивно] (http://stackoverflow.com/questions/6623161/javac-option-to-compile-recursively) –

+0

@rocketboy Я не хочу использовать какой-либо инструмент сборки, для этого требуется обучение некоторые дополнительные вещи. Пользователь должен иметь возможность запускать его из командной строки – df611

ответ

1

Вы попробовали -sourcepath флаг. Из Oracle documentation,

-sourcepath SourcePath Укажите путь исходного кода для поиска определений классов или интерфейсов. Как и в случае с дорожкой класса пользователя, записи исходного пути разделяются точкой с запятой (;) и могут быть каталоги, архивы JAR или ZIP-архивы. Если используются пакеты, локальное имя пути в каталоге или архиве должно отражать имя пакета.

Смежные вопросы