我目前正在使用JDT的AST,以便能够解析Java源代码。我需要确定参数的类型绑定。例如,对于String参数,我需要java.lang.String而不是String。
从一些研究中我了解到这可以使用resolveBinding来完成,但是为了这样做,需要使用ASTParser中定义的setEnvironment方法来设置环境。但由于某种原因,Eclipse指示编译时错误,表示未对ASTParser定义setEnvironment。我需要setEnvironment方法,因为我没有可用的IJavaProject。
任何人都可以说明可能出现的问题吗?
答案 0 :(得分:0)
您是否正在创建Eclipse插件?如果是,那么您应该能够解析绑定。或者您可能正在使用Eclipse JDT中的AST创建一个独立的应用程序?不清楚。如果你能提供一些失败的代码片段,它也会很有用。
我开发了一些独立的应用程序,setEnvironment
可以正常使用ASTParser
,这是一段代码片段:
ASTParser parser = ASTParser.newParser(AST.JLS4);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
// you must set compilation unit name, so I just name it as a path to source file
parser.setUnitName(inputFilePath.toString());
//params classpathEntries, sourcepathEntries, encodings, IncludeRunningVMBootclasspath
parser.setEnvironment(null, null, null, true);
//fileContent is a char array of some source code
parser.setSource(fileContent);
parser.setResolveBindings(true);
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
然后使用CompilationUnit
,您可以遍历树并查找所需的节点并使用resolveTypeBinding()
获取ITypeBinding
对象,然后使用getQualifiedName()
获取全名类型,即您提到的java.lang.String
。
答案 1 :(得分:0)
我能够使用以下jar文件使用.setEnvironment方法:org.eclipse.jdt.core-3.10.0.v20140604-1726.jar。另外,我在这个link中将这组jar文件添加到了我的classPath中。
答案 2 :(得分:0)
我在3.7版中使用eclipse.jdt.core的Maven存储库时遇到了这个问题。实际上,以前的版本不支持此方法。因此,在此范围内,使用较新的版本3.10(+)。x将是有益的。