这是我的代码。我要在那里做一个CompilationUnit
ASTParser parser = ASTParser.newParser(AST.JLS8);
parser.setResolveBindings(true);
parser.setStatementsRecovery(true);
parser.setBindingsRecovery(true);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setEnvironment(getProjectJars(), getSrcPaths(), null, true);
parser.setSource(IOUtils.toCharArray(new FileInputStream(MY_SRC_FILE)));
parser.setUnitName(MY_SRC_FILE.getAbsolutePath());
CompilationUnit cu = (CompilationUnit) parser.createAST(null);如何从源码制作的CompilationUnit中获取ICompilationUnit?谢谢
发布于 2015-11-06 18:56:22
我找到了解决方案:
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IPath path = Path.fromOSString(source.getAbsolutePath());
IFile file = workspace.getRoot().getFileForLocation(path);
ICompilationUnit compilationUnit = (ICompilationUnit) JavaCore.create(file);发布于 2017-11-28 02:50:45
我试过了,它起作用了:
ICompilationUnit cu= (ICompilationUnit)compilationUnit.getJavaElement();发布于 2020-06-11 14:56:13
第一个选项如下:
ICompilationUnit compilationUnit = JavaCore.createCompilationUnitFrom(javaFile);
types = compilationUnit.getAllTypes();第二个选项如下:
IProject project = javaFile.getProject();
IJavaProject jProject = JavaCore.create(project);
if (jProject == null || !jProject.exists())
{
return null;
}
IPackageFragment packageFragment = null;
try {
packageFragment = jProject.findPackageFragment(
javaFile.getFullPath().removeLastSegments(1));
String unitName = javaFile.getName();
ICompilationUnit cu = packageFragment.getCompilationUnit(unitName);
return cu;
} catch (JavaModelException e) {
return null;
}https://stackoverflow.com/questions/33564878
复制相似问题