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