【问题标题】:Eclipse create CompilationUnit from .java fileEclipse 从 .java 文件创建 CompilationUnit
【发布时间】:2012-06-23 04:31:05
【问题描述】:

如何将 .java 文件加载到 CompilationUnit 中?例如,假设我当前的项目中有一个 A.java 文件。我想将它加载到 CompilationUnit 中,然后将其传递给 ASTParser。仅将其作为纯文本加载不是一个选项,因为在这种情况下,我似乎不会在 AST 中获得绑定信息。

【问题讨论】:

    标签: java eclipse eclipse-jdt abstract-syntax-tree compilationunit


    【解决方案1】:

    您可以使用jdteclipse core 库加载项目。

    使用以下代码可以加载工作区中的所有项目。

    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    // Get all projects in the workspace
    IProject[] projects = root.getProjects();
    

    然后你可以得到包,然后是java文件。

    IPackageFragment[] packages = JavaCore.create(project).getPackageFragments();
    IPackageFragment mypackage = packages.get(0); // implement your own logic to select package
    ICompilationUnit unit = mypackage.getCompilationUnits();
    

    然后你可以使用这个 ICompilationUnit 对象来获取 CompilationUnit

    ASTParser parser = ASTParser.newParser(AST.JLS3); 
    parser.setKind(ASTParser.K_COMPILATION_UNIT);
    parser.setSource(unit);
    parser.setResolveBindings(true);
    CompilationUnit cUnit = parser.createAST(null);
    

    这个 CompilationUnit 对象可以传递给 ASTParser。

    【讨论】:

    • 这仅适用于 Eclipse 项目?即,它不适用于 Java 项目?
    • 你不能通过 jar 文件在 java 项目中使用 JDT。要使用 JDT,您需要将程序作为插件(或至少是支持 OSGi 的应用程序)运行。
    • 好的,所以我可以通过这种方法将 .java 文件加载到 CompilationUnit,仅适用于 Eclipse 项目。仅供参考,可以通过使用 setSource(char[]) 和 setEnvironment 方法在 Eclipse 项目之外使用 JDT。 (从 3.6 版开始)
    • @bellpeace 我正在使用 3.5.1 版。很高兴知道 JDT 团队在他们的新版本中包含了 eclipse env 之外的支持。也许我会试试看。无论如何感谢您的信息。
    • @prosseek 你可以遍历packages [IPackageFragment 数组] 并获取包。 mypackage 的类型为 IPackageFragment
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2016-07-05
    • 2013-02-03
    • 2013-08-31
    相关资源
    最近更新 更多