首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDT -如何从CompilationUnit获取ICompilationUnit

JDT -如何从CompilationUnit获取ICompilationUnit
EN

Stack Overflow用户
提问于 2015-11-06 18:38:15
回答 3查看 1.4K关注 0票数 0

这是我的代码。我要在那里做一个CompilationUnit

代码语言:javascript
复制
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?谢谢

EN

回答 3

Stack Overflow用户

发布于 2015-11-06 18:56:22

我找到了解决方案:

代码语言:javascript
复制
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IPath path = Path.fromOSString(source.getAbsolutePath());
IFile file = workspace.getRoot().getFileForLocation(path);
ICompilationUnit compilationUnit = (ICompilationUnit) JavaCore.create(file);
票数 0
EN

Stack Overflow用户

发布于 2017-11-28 02:50:45

我试过了,它起作用了:

代码语言:javascript
复制
ICompilationUnit cu= (ICompilationUnit)compilationUnit.getJavaElement();
票数 0
EN

Stack Overflow用户

发布于 2020-06-11 14:56:13

第一个选项如下:

代码语言:javascript
复制
ICompilationUnit compilationUnit = JavaCore.createCompilationUnitFrom(javaFile);  
types = compilationUnit.getAllTypes();

第二个选项如下:

代码语言:javascript
复制
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; 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33564878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档