2009-10-16 8 views
3

Я пытаюсь скомпилировать многие файлы с помощью API компилятора.Компиляция набора файлов Java внутри дерева каталогов с помощью JSR 199 API компилятора

Скажем, у меня есть структура каталогов

.../program 
    +/org 
    +/foo 
    |+ Main.java 
    +/bar 
    + Tools.java 

Есть ли способ, чтобы открыть все файлы Java и сделать его компилятор все, не прибегая к рекурсии во всех каталогах и найти все *. java-файлы?

EDIT: То, что я пытаюсь сделать, это собрать все классы, которые я получаю в каком-либо дереве каталогов. Эти классы независимы друг от друга. Затем я загружаю классы и создаю экземпляр некоторых объектов этих классов и вызывая методы. Ни один из классов не должен иметь основной.

+0

Забавно, что никто не может (желает?) Помочь вам с такой основной проблемой - забрать блестящие IDE, и все будут ввернуты! : D – sfussenegger

+0

BCEL или ASM могут помочь. http://chaoticjava.com/posts/jakartas-bcel-vs-objectwebs-asm/ –

+1

ОП говорит об использовании Java Compiler API aka JSR 199, а не javac. Это не так. –

ответ

3

javax.tools.JavaFileManager класс имеет list() метод, который должен сделать трюк:

Iterable<JavaFileObject> list(JavaFileManager.Location location, 
           String packageName, 
           Set<JavaFileObject.Kind> kinds, 
           boolean recurse) 
           throws IOException 

Используйте параметр recurse включить «подпакетов», а затем просто итерацию над возвращаемой JavaFileObject.

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

  • Нет связанных вопросов^_^