Компиляция набора файлов Java внутри дерева каталогов с помощью API компилятора JSR 199
Я пытаюсь скомпилировать много файлов с помощью API компилятора.
Скажем, у меня есть структура каталогов
.../program +/org +/foo |+ Main.java +/bar + Tools.java
Есть ли способ обнаружить все файлы Java и сделать все компилятором, не прибегая к повторению во всех каталогах и поиску всех файлов *.java?
РЕДАКТИРОВАТЬ: То, что я пытаюсь сделать, это скомпилировать все классы, которые я получаю в некотором дереве каталогов. Эти классы не зависят друг от друга. Затем я загружаю классы и создаю экземпляры некоторых объектов этих классов и вызываю методы. Ни один из классов не должен иметь основной.
1 ответ
Решение
javax.tools.JavaFileManager
класс имеет list()
метод, который должен сделать трюк:
Iterable<JavaFileObject> list(JavaFileManager.Location location,
String packageName,
Set<JavaFileObject.Kind> kinds,
boolean recurse)
throws IOException
Использовать recurse
параметр, чтобы включить "подпакеты", а затем просто перебрать возвращенный JavaFileObject
,