gpt4 book ai didi

java - 使用 JDT 在独立 Java 应用程序中提取 IcompilationUnits

转载 作者:行者123 更新时间:2023-12-02 09:35:46 24 4
gpt4 key购买 nike

我正在编写一个普通的Java应用程序,想要提取输入项目的所有ICompilationUnit(这不是必需的)由 Eclipse 开发)。由于我没有开发 Eclipse 插件,因此我无法使用以下代码来提取 ICompilationUnit:

IWorkspace workspace = ResourcesPlugin.getWorkspace();
IPath path = Path.fromOSString(source.getAbsolutePath());
IFile file = workspace.getRoot().getFileForLocation(path);
ICompilationUnit compilationUnit = (ICompilationUnit) JavaCore.create(file);

目前,我正在使用以下代码来解析输入 Java 文件。 (str包含输入java文件的源代码)

ASTParser parser = ASTParser.newParser(AST.JLS12);
parser.setSource(str.toCharArray());
parser.setKind(ASTParser.K_COMPILATION_UNIT);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);

但是,以下代码返回 null,因为它不是从 Java 元素创建的。

ICompilationUnit icu = (ICompilationUnit)compilationUnit.getJavaElement();

问题:有没有办法在普通的Java应用程序中提取ICompilationUnits?

最佳答案

JDT 搜索引擎需要索引。在 IDE 中,索引是在工作区构建期间创建的。这意味着如果没有工作区,就没有开箱即用的方法来使用搜索引擎。

理论上,可以实现自己的索引,但绝对不推荐这样做。

还有两个选择:

  1. 正如评论中提到的,使用您自己的现有类的遍历,或者

  2. 让您的应用程序在后台初始化一个工作区,您的代码将作为真正的 Java 项目导入到其中。构建该工作台后,搜索引擎应该可用。所有这一切都可以在 headless 应用程序中发生,无需启动 Eclipse UI。

有关选项 (2) 的灵感,您可以从这里开始:

  • 偏微分方程 CoreTestApplication ,这是使用的 headless 应用程序,例如,用于运行 JDT 自己的测试。使用 -data 命令行参数传递的位置会自动提供工作区。
  • JDT 的 AbstractJavaModelTests ,它提供了大量用于以编程方式创建和配置 Java 项目的实用程序。
  • AbstractJavaModelTests 的子类,其中包含大量如何使用这些 Java 项目的示例,包括搜索

如果您想实时查看所有内容,我建议您在源代码中设置一个包含 JDT 和 PDE 项目的工作区。最简单的方法是 use Oomph为此。

上面的 CoreTestApplication 将运行,如果您选择任何测试类,调用 Run as > Runconfiguration... 然后创建类型为 JUnit Plug-in Test 的启动配置code> 并在选项卡 Main 上选择运行应用程序:[No Application] - Headless Mode

关于java - 使用 JDT 在独立 Java 应用程序中提取 IcompilationUnits,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57523860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com