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