代码之家  ›  专栏  ›  技术社区  ›  Flame

用JSR 199编译器API在目录树中编译一组Java文件

  •  3
  • Flame  · 技术社区  · 16 年前

    我正在尝试使用编译器API编译许多文件。

    假设我有一个目录结构

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

    有没有办法发现所有的Java文件,并使它编译一切,而不诉诸于所有目录递归,并找到所有的*.java文件?

    编辑:我要做的是编译我在某个目录树中得到的所有类。这些类彼此独立。然后我加载类并实例化这些类的一些对象并调用方法。所有的类都不需要main。

    1 回复  |  直到 16 年前
        1
  •  3
  •   Pascal Thivent    16 年前

    这个 javax.tools.JavaFileManager 类有 list() 该技巧的方法:

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

    使用 recurse 参数来包含“subpackages”,然后只对返回的 JavaFileObject .

    推荐文章