Javadoc源文件解析

时间:2014-07-13 21:23:30

标签: java parsing

在我的程序中,我动态获取.java文件的名称。在这个文件中我需要找到所有方法,foreach方法也是所有参数(也带有它们的注释)。

我在这里阅读了讨论并找到了这个https://code.google.com/p/javaparser/ javaparser,看起来很容易使用,但问题是,它只适用于1.5。

比你提到的,Java 1.6已经有了内置的解析器(javax.lang.model)。但我无法弄清楚它是如何运作的。你知道它的任何好的教程/例子吗?

你知道解析java源文件的其他方法吗?

2 个答案:

答案 0 :(得分:3)

如何使用Doclet API
通常,此API用于bat文件,但您可以按以下方式以编程方式调用。

重要:此API不存在于rt.jar(JRE)中,而是存在于tools.jar(JDK)中。所以你需要将tool.jar添加到classpath中。

import com.sun.javadoc.ClassDoc;
import com.sun.javadoc.Doclet;
import com.sun.javadoc.MethodDoc;
import com.sun.javadoc.RootDoc;
import com.sun.tools.javadoc.Main;

public class DocletTest {

    public static void main(String[] args) {
        Main.execute("", Analyzer.class.getName(), new String[] {"path/to/your/file.java"});
    }

    public static class Analyzer extends Doclet {

        public static boolean start(RootDoc root) {
            for (ClassDoc classDoc : root.classes()) {
                System.out.println("Class: " + classDoc.qualifiedName());

                for (MethodDoc methodDoc : classDoc.methods()) {
                    System.out.println("  " + methodDoc.returnType() + " " + methodDoc.name() + methodDoc.signature());
                }
            }
            return false;
        }
    }
}

答案 1 :(得分:2)

再看一下javaparser project。它已更新为支持所有现代Java版本。

Doclet API非常难以使用,并且记录严重。它将要么消失,要么被更好的东西替换,hopefully even in Java 1.9