使用JDT

时间:2015-10-17 08:48:11

标签: java swing eclipse-jdt

我正在使用Java开发工具( JDT )编写Swing Java应用程序,如下所示。

输入:Java项目

输出:此项目中所有元素的名称(方法字段等)等。

到目前为止,我已经了解如何使用 JDT 来解析单个 Java 文件以收集信息,以创建相应的抽象语法树< / strong>(AST)。但是,这种方法会导致缺乏分析信息(例如:获取调用相同方法的所有方法)。

如何在不解析所有单个 .java 文件的情况下应用 JDT 从绝对路径解析项目?

2 个答案:

答案 0 :(得分:0)

我的想法是,我们将独立解析每个 .jav 文件。获得的 AST 可以解析绑定。方法 Utils.getFile()将获取 .java 文件的内容并保存在String对象中。

    public parseJavaFile(String pathOfJavaFile, String[] sources, String[] classpath, String nameOfJavaFile)
        throws Exception {
    ASTParser parser = ASTParser.newParser(AST.JLS8);//choose source code analyzing strategy

    parser.setResolveBindings(true);// turn on binding strategy
    parser.setKind(ASTParser.K_COMPILATION_UNIT);// the source code is a file .java
    parser.setBindingsRecovery(true);
    parser.setCompilerOptions(JavaCore.getOptions());

    parser.setUnitName(nameOfJavaFile);
    parser.setEnvironment(classpath, sources, new String[] { "UTF-8" }, true);
    parser.setSource(Utils.getFile(pathOfJavaFile).toCharArray());

    CompilationUnit cu = (CompilationUnit) parser.createAST(null);

    if (cu.getAST().hasBindingsRecovery()) {
        // Now binding is activated. Do something else
    }
}

如何使用上述代码的示例。

  • classpath 对应 jre 文件夹中 rt.java 的绝对路径。

  • sources 是源代码文件夹列表。

    public static void main(String[] args) throws IOException {
         String projectPath = "G:\\Dropbox\\Workspace\\Wave-CIA-rebuid-v2";
         String[] sources = { "G:\\Dropbox\\Workspace\\Wave-CIA-rebuid-v2\\src" };
         String[] classpath = { "C:\\Program Files\\Java\\jre1.8.0_40\\lib\\rt.jar" };
         String pathOfJavaFile = "G:\\Dropbox\\Workspace\\Wave-CIA-rebuid-v2\\src\\test.java";
         String nameOfJavaFile = "test.java";
         new parseJavaFile(pathOfJavaFile, sources, classpath, nameOfJavaFile);
    

    }

答案 1 :(得分:-1)

你可以使用eclipse资源。 Eclipse资源将为您提供所有与项目相关的信息。

参考:http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2FresInt_filesystem.htm