当前位置: 首页 > 知识库问答 >
问题:

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

双子民
2023-03-14

我正在编写一个普通的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?

共有1个答案

颛孙高义
2023-03-14

JDT搜索引擎需要一个索引。在IDE中,索引是在工作区构建期间创建的。这意味着没有工作空间,就没有现成的方法来使用搜索引擎。

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

仍有两个选项:

>

  • 如评论中所述,使用您自己的现有类遍历,或

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

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

      < li>PDE的CoreTestApplication,它是用于运行JDT自己的测试的无头应用程序。在使用< code>-data命令行参数传递的位置,工作空间会自动可用。 < li>JDT的AbstractJavaModelTests,它提供了大量用于以编程方式创建

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

    上面的 CoreTest 应用程序将被运行,如果选择任何测试类,调用运行方式

  •  类似资料:
    • 问题内容: 我正在寻找在 独立的(桌面/秋千)* 应用程序中使用 Spring的 示例或教程,我进行了很多搜索,但找不到有用的东西,所有示例和教程均适用于Web应用程序,请告知。 * 问题答案: 使用maven创建独立应用程序,如下所示: 使用Maven创建独立的应用程序 将applicationContext放在类路径中,并按如下所示将其加载到主类中: 在此处查看全文: http://www.d

    • 问题内容: 这是我的代码: 为什么不起作用?我懂了。在独立的应用程序中可以使用自动装配吗? 问题答案: Spring在独立应用程序中工作。您使用错误的方式来创建Spring bean。这样做的正确方法是: 在第一种情况下(问题中的那个),您将自己创建对象,而不是从Spring上下文中获取对象。因此,Spring没有机会获得依赖关系(这会导致)。 在第二种情况(此答案中的一种)中,您是从Spring

    • 现在假设我们想要使用 Spark API 写一个独立的应用程序。我们将通过使用 Scala(用 SBT),Java(用 Maven) 和 Python 写一个简单的应用程序来学习。 我们用 Scala 创建一个非常简单的 Spark 应用程序。如此简单,事实上它的名字叫 SimpleApp.scala: /* SimpleApp.scala */ import org.apache.spark.S

    • 问题内容: 我正在考虑开发由两部分组成的桌面应用程序: 用户界面(例如Java应用) 后端Node.js服务器 2个部分通过插座连接。不要问为什么我知道这很奇怪。 我将希望能够为客户提供带有安装程序的应用程序。我不希望用户必须自己安装Node.js。 有没有一种方法可以独立安装Node.js服务器,即无需在系统上全局安装Node.js。 对于任何(Windows,Linux,Mac OS X …)

    • 问题内容: 如何使用Maven创建桌面(独立/ Swing)应用程序? 我正在使用Eclipse 3.6。 问题答案: 创建一个Maven项目,如下所示: 将以下条目添加到您的pom文件中: 将项目作为Maven项目导入到Eclipse,然后作为Java应用程序运行。