Я хочу скомпилировать приложение на Java, состоящее из различного количества классов Java в определенном количестве пакетов.В командной строке я могу перейти в папку, содержащую корневой пакет, и набрать:
javac rootpackage/subpackage/*.java
или
javac rootpackage/*/*.java
, чтобы скомпилировать все классы Java во всех основных подпакетах моегоrootpackage.
Однако я хотел бы иметь возможность сделать это в приложении Java.(Идея заключается в том, что мы предоставляем студентам приложение, содержащее модульные тесты. Для выполнения модульных тестов необходимо выполнить их код, затем приложение создает файл JAR, содержащий их исходные файлы, которые были «помечены водяными знаками» с результатами теста. Всеэто работает нормально, но мы хотели бы убедиться, что проверенные файлы классов созданы из представленных исходных файлов, поэтому возникает идея программной компиляции исходных файлов Java).
Проблема заключается в том, что каждый студент хранит своикорневой пакет в произвольной позиции, и я не могу передать местоположение файла JavaCompiler (javax.tools).
Возможно ли это, и если да, может кто-нибудь дать несколько советов о том, как получитьпроизвольно размещенный корневой пакет, скомпилированный правильно.
Приветствия
Ричард
Подробнее:
студент имеет структуру папок:
/home/student/work/java/myproject/
, который содержит корневой пакет.Они запускают приложение (возможно, хранящееся в этой папке - и, таким образом, никаких проблем, но, скорее всего, хранящееся в другом месте), которое запрашивает у них папку, содержащую корневой пакет.После ввода студенты нажимают кнопку создания JAR, которая компилирует файлы в свои пакеты, запускает тесты для вновь скомпилированных файлов и затем создает JAR.
Обдумывая эту проблему, возможно, что решение состоит в том, чтобы попросить студентов установить наше приложение 'create JAR' в папку, содержащую их корневой пакет.