我正在使用eclipse JDT AST解析器來處理一些Java代碼,並試圖提取字段和方法聲明的類型綁定。這樣做的邏輯是在我的Visitor類中(見下文)。不幸的是,我沒有任何運氣,也沒有任何綁定解決(它們始終爲空)。有趣的是,綁定可以在日食ASTView插件上使用相同的代碼。我究竟做錯了什麼?在eclipse中無法通過AST處理來解決綁定
這裏有一些相關的代碼片段,希望能幫助別人找出發生了什麼!
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(source);
parser.setResolveBindings(true);
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
GenericVisitor visitor = new GenericVisitor(outDir + "//" + file.getName() + ".xml");
visitor.process(unit);
public class GenericVisitor extends ASTVisitor
{
public void endVisit(FieldDeclaration node)
{
String bindingInfo = "";
ITypeBinding binding = node.getType().resolveBinding();
if(binding == null)
{
System.out.println("field declaration binding = null");
}
else
{
bindingInfo = binding.getQualifiedName();
}
endVisitNode(node, bindingInfo);
}
public void endVisit(MethodInvocation node)
{
String bindingInfo = "";
IMethodBinding binding = node.resolveMethodBinding();
if(binding == null)
{
System.out.println("method binding = null");
}
else
{
bindingInfo = binding.toString();
}
endVisitNode(node, bindingInfo);
}
}
你也可以使用parser.setEnvironment(...):「設置時,沒有IJavaProject可用,可用於環境」 – roesslerj 2012-06-19 10:10:47