我正在尝试使用编译器API编译许多文件。
假设我有一个目录结构
.../program +/org +/foo |+ Main.java +/bar + Tools.java
有没有办法发现所有的Java文件,并使它编译一切,而不诉诸于所有目录递归,并找到所有的*.java文件?
编辑:我要做的是编译我在某个目录树中得到的所有类。这些类彼此独立。然后我加载类并实例化这些类的一些对象并调用方法。所有的类都不需要main。
这个 javax.tools.JavaFileManager 类有 list() 该技巧的方法:
javax.tools.JavaFileManager
list()
Iterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException
使用 recurse 参数来包含“subpackages”,然后只对返回的 JavaFileObject .
recurse
JavaFileObject