由于单个Java文件可以编译成任意数量的类文件,因此编译器API是否有某种方法可以找出生成了哪些类文件?它输出到可能包含其他文件的目录中,所以我不能只看那个。

最佳答案

我想出了一些可行的方法。 * FileManager具有用于获取事物位置的回调,包括用于输出的事物。您可以使用ForwardingJavaFileManager包装它,重写并存储调用中的值。

final List<String> classFiles = new ArrayList<>();
StandardJavaFileManager inner = compiler.getStandardFileManager(null, null, null);
JavaFileManager fileManager = new ForwardingJavaFileManager(inner) {
    @Override
    public JavaFileObject getJavaFileForOutput(Location location, String className,
                JavaFileObject.Kind kind, FileObject sibling) throws IOException {
        JavaFileObject o = super.getJavaFileForOutput(location, className, kind, sibling);
        classFiles.add(o.getName());
        return o;
    }
};

关于java - 使用Java Compiler API,创建了哪些类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12864633/

10-09 03:30