2

我使用 JDT 作为库来注释 UIMA 框架中的源代码。在 UIMA 框架中,我以 char[] 形式获取源代码。现在我想弄清楚源代码中的那些变量绑定。虽然我做了 setResolveBinding(true),但我总是通过调用 resolveBinding() 得到 null。JavaDoc 说如果我通过 char[] 提供 setSource(),我需要 setProject() 和 setUnitName() 以获得非空结果。

但是,IJavaProject 和 UnitName 这两个东西只能通过将源文件导入到 eclispe 项目中来获得,这在我的情况下是不可行的。

有没有人解决过这个问题?

4

2 回答 2

2

能拿到UIMA框架的jar文件吗?如果是这样,我们可以遍历 jar 文件。解析源代码是从 AST 获取信息的好选择。但是,由于只有在编译成功后才会生成 jar 文件,因此获取有用信息也是一个不错的选择。

于 2013-03-14T14:04:49.477 回答
0

要跨多个文件进行绑定,您必须创建这些文件的临时文件char[]并使用(来自 ASTParser 文档):

public void setEnvironment(String[] classpathEntries,
                       String[] sourcepathEntries,
                       String[] encodings,
                       boolean includeRunningVMBootclasspath)

设置没有 IJavaProject 可用时要使用的环境。[...]

public void createASTs(String[] sourceFilePaths,
                   String[] encodings,
                   String[] bindingKeys,
                   FileASTRequestor requestor,
                   IProgressMonitor monitor)

为一批编译单元创建 AST。当绑定被解析时,处理一批编译单元效率更高,因为解析绑定所涉及的大部分工作都可以共享。

解析绑定时,所有编译单元都使用相同的环境进行解析,必须事先使用 setEnvironment 设置。[...]

于 2013-05-05T10:25:00.853 回答