Welcome

首页 / 软件开发 / JAVA / 基于JDT的JAR源代码搜索

基于JDT的JAR源代码搜索2010-11-20 IBM 魏强 王芹华 邵兵引言

Eclipse 为程序员提供了强大的文本搜索功能,程序员可以方便 的在工作空间中搜索到需要的 JAVA 代码或者文本。但是有时候,程序员希望在 .class 文件源码或者普通文本文件中搜索某个字符串,而这些文件包含于 Jar 文件中,此时 Eclipse 就无法满足要求。比如,用户试图寻找 UI 上显示的某 字符串的定义位置,这就需要在 Jar 文件内的普通文本文件 , 以及 .class 文 件源码中搜索。这些 Jar 文件包含于项目类路径中,这个功能在 RCP 开发中是 经常需要的,而 Eclipse 目前还未提供这个特性。本文通过使用 JDT(Java Development Toolkit)中与 Jar 相关的接口,解决了这个问题,并给出示例及 程序。

Eclipse 中搜索的原理

Eclipse 采用 Lucene 技术开发其搜索内核, 该内核通过对关键字进行索引,快速定位目标文件。例如,Eclipse 会对 JAVA 源文件中的类名、字段名、方法名等进行索引,当程序员使用 Open Type 功能 (快捷键:CTRL+SHIFT+T)进行类搜索时,便可以通过类名这个索引字段进行快 速搜索 ; 在使用 JAVA 搜索(Java Search)功能时,Eclipse 也会让用户指定 具体的索引字段(Search For),如可以选择方法名、类名、字段名、包名、构 造器名等,Eclipse 会根据选择的索引字段与用户的输入,快速搜索到源代码。

Eclipse 在提供 Jar 源代码搜索方面的限制

Eclipse 提供了文 件搜索(File Search)的功能,用来搜索指定范围 ( 项目、工作空间等 ) 内 的文本文件。这个功能并没有根据某些特殊关键字进行索引。因为对于任意字符 串的搜索,是无法找到特定关键字进行索引的。因此为了提高搜索效率, Eclipse 对于任意字符串的搜索范围仅限于用户编写的文本文件,而没有对项目 所依赖的 Jar 文件中的类的源代码进行搜索。因为 Jar 源代码的数量往往数量 庞大,搜索它们将是一个相当费时的操作。但是在很多情况下,程序员有必要进 行类源代码的搜索,通过查看需要的源代码解决一些问题,Eclipse 目前提供的 搜索功能就无法满足这样的需求。

JDT 中 Jar 文件相关的类结构图分析

下面两图展示了 JDT 中与 Jar 文件处理相关的类,从图中,可以清晰 的了解它们的层次、包含和对应关系。

图 1. JDT 中与 Jar 文件相关的 UML 类结构图

图 2. JDT 中与 Jar 文件相关的类结构对应图