Компиляция набора файлов 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,

Другие вопросы по тегам