gpt4 book ai didi

java - ASTParser 类的 setEnvironment 方法未定义

转载 作者:太空宇宙 更新时间:2023-11-04 15:03:10 25 4
gpt4 key购买 nike

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

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

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

最佳答案

您正在创建 Eclipse 插件吗?如果是,那么您应该能够解析绑定(bind)。或者您可能正在使用 Eclipse JDT 中的 AST 创建独立应用程序?不清楚。如果您可以提供一些失败的代码片段,这也会很有用。

我开发了一些独立的应用程序,setEnvironmentASTParser 一起使用效果很好,这里是一个代码片段:

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

关于java - ASTParser 类的 setEnvironment 方法未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22337228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com