对于ASTParser类,未定义setEnvironment方法

时间:2014-03-11 21:38:39

标签: java abstract-syntax-tree eclipse-jdt

我目前正在使用JDT的AST,以便能够解析Java源代码。我需要确定参数的类型绑定。例如,对于String参数,我需要java.lang.String而不是String。

从一些研究中我了解到这可以使用resolveBinding来完成,但是为了这样做,需要使用ASTParser中定义的setEnvironment方法来设置环境。但由于某种原因,Eclipse指示编译时错误,表示未对ASTParser定义setEnvironment。我需要setEnvironment方法,因为我没有可用的IJavaProject。

任何人都可以说明可能出现的问题吗?

3 个答案:

答案 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将是有益的。

相关问题