Eclipse for Java 本身不是一个独立的软件,它是一个平台(Eclipse Platform)上的一个插件(Eclipse Java Development Tools, 简称 JDT)。

当我们在讨论 "Eclipse Java 的 API" 时,我们实际上在讨论两个层面:
- JDT API (Java Development Tools API):这是最核心、最直接的 "Eclipse Java API",它专门用于操作 Java 代码本身,比如解析 Java 文件、获取语法树、进行代码分析、重构、编译等,如果你要写一个能“理解”和“修改”Java 代码的插件,这个是你的首选。
- *Eclipse Platform API (org.eclipse.)**:这是更底层的 Eclipse 框架 API,JDT 就是构建在这个框架之上的,如果你想写一些通用的插件,比如在 Eclipse 界面上添加一个新菜单、视图、对话框,或者操作文件系统、管理项目资源等,你就会用到这个 API。
下面我将从这两个层面为你详细介绍,并提供学习资源和示例。
JDT API (Java Development Tools API)
JDT API 是 Java 开发者在 Eclipse 中进行二次开发最常接触的 API,它提供了一套强大的模型来表示和管理 Java 代码。
核心包和关键类:
JDT API 主要分布在以下几个包中:

| 包名 | 核心功能 | 关键类/接口 |
|---|---|---|
org.eclipse.jdt.core |
核心模型,提供对 Java 项目、文件、元素的编程访问,这是 JDT 的基石。 | IJavaProject, ICompilationUnit (代表一个 .java 文件), IClassFile (代表一个 .class 文件), IMethod, IField, IType (代表一个类/接口/枚举) |
org.eclipse.jdt.core.dom |
DOM (Document Object Model) API,用于分析和修改 Java 源代码的抽象语法树,非常适合做代码分析、静态检查、代码生成等。 | AST, ASTParser, CompilationUnit, TypeDeclaration, MethodDeclaration, Block |
org.eclipse.jdt.ui |
UI 相关,用于在 Eclipse 用户界面中与 Java 元素进行交互,打开编辑器、高亮显示代码等。 | JavaUI, EditorUtility |
org.eclipse.jdt.core.refactoring |
重构 API,用于执行各种重构操作,如重命名方法、提取方法等。 | RefactoringCore, RenameRefactoring |
一个简单的 JDT API 示例:读取一个 Java 文件并打印其所有方法名
假设你想写一个 Eclipse 插件,当用户选中一个 Java 文件时,插件能列出该文件中所有方法的名称。
步骤:
- 获取用户当前在编辑器中打开的
IJavaElement。 - 将其转换为
ICompilationUnit(Java 源文件)。 - 使用
ASTParser来解析这个文件,生成CompilationUnit(DOM)。 - 遍历 DOM 树,找到所有的方法声明并打印名称。
代码片段:
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.dom.*;
import org.eclipse.jface.operation.IRunnableWithProgress;
// ... 在一个实现了 IRunnableWithProgress 的类中 ...
@Override
public void run(IProgressMonitor monitor) {
// 1. 假设我们已经获取到了当前选中的 ICompilationUnit
ICompilationUnit unit = ...;
if (unit == null) {
System.out.println("No Java file selected.");
return;
}
// 2. 创建 ASTParser
ASTParser parser = ASTParser.newParser(AST.JLS13); // 使用你目标 Java 版本的语法
parser.setSource(unit);
parser.setResolveBindings(true); // 解析绑定,可以获取到类型信息等
// 3. 解析并获取 CompilationUnit
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
// 4. 遍历 AST 树查找方法
cu.accept(new ASTVisitor() {
@Override
public boolean visit(MethodDeclaration node) {
// 打印方法名
System.out.println("Found method: " + node.getName().getIdentifier());
return super.visit(node);
}
});
}
Eclipse Platform API (通用框架)
JDT 插件也是 Eclipse 插件,所以它必然要使用 Eclipse 平台的 API 来构建用户界面和与其他部分交互。
核心包和关键类:
| 包名 | 核心功能 | 关键类/接口 |
|---|---|---|
org.eclipse.core.resources |
资源管理,操作项目、文件、文件夹,这是所有插件的基础。 | IProject, IFile, IFolder, IWorkspace, IWorkspaceRoot |
org.eclipse.ui |
工作台核心,管理窗口、视图、编辑器、操作等。 | IWorkbench, IWorkbenchWindow, IViewPart, IEditorPart, IAction |
org.eclipse.jface |
基础 UI 组件,提供对话框、向导、查看器等。 | MessageDialog, WizardDialog, TableViewer, TreeViewer |
org.eclipse.ui.part |
UI 集成,帮助你将自定义的视图、编辑器集成到 Eclipse 工作台中。 | ViewPart, EditorPart |
org.eclipse.core.runtime |
运行时核心,提供插件生命周期、日志、扩展点等基础服务。 | Plugin, IExtension, IConfigurationElement, IStatus |
一个简单的 Platform API 示例:创建一个新菜单项
假设你想在 Eclipse 的 "File" 菜单下添加一个 "Say Hello" 选项,点击后弹出一个对话框。
步骤:
- 在
plugin.xml文件中定义一个 Contribution (扩展),将你的操作添加到 "File" 菜单。 - 创建一个 Java 类实现
IActionDelegate接口,定义菜单项被点击时的行为。 - 在
plugin.xml中将这个类与你定义的操作关联起来。
plugin.xml (片段):
<extension
point="org.eclipse.ui.commands">
<command
id="com.example.myplugin.helloCommand"
name="Say Hello">
</command>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="com.example.myplugin.HelloHandler"
commandId="com.example.myplugin.helloCommand">
</handler>
</extension>
<extension
point="org.eclipse.ui.menus">
<menu
id="file.menu"
label="File">
<separator
name="file.import.separator"
visible="true">
</separator>
<menuContribution
locationURI="menu:file.menu?after=file.import.separator">
<command
commandId="com.example.myplugin.helloCommand"
label="Say Hello"
style="push">
</command>
</menuContribution>
</menu>
</extension>
HelloHandler.java (代码片段):
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ui.handlers.HandlerUtil;
public class HelloHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
// 获取当前活动窗口
// 弹出一个消息对话框
MessageDialog.openInformation(
HandlerUtil.getActiveShell(event),
"Hello Plugin",
"Hello, Eclipse World!");
return null;
}
}
如何学习和查阅 Eclipse API?
-
Eclipse PDE 帮助文档 (最重要!)
- 当你安装了 Eclipse PDE (Plug-in Development Environment) 后,帮助文档中会包含 "Eclipse Platform Plug-in Developer's Guide" 和 "JDT Core" 等章节。
- 这是最权威、最详细的 API 文档和教程。强烈建议从这里开始。
- 在 Eclipse 中,打开
Help -> Help Contents即可访问。
-
Javadoc (API Reference)
- 对于已经安装的 Eclipse,你可以直接在代码中按
F2或Shift + F2来查看某个类或方法的 Javadoc 文档。 - 也可以在 Eclipse 的安装目录下找到
plugins文件夹,里面包含了许多 JAR 文件,它们就是 Eclipse 源代码和 Javadoc 的来源。
- 对于已经安装的 Eclipse,你可以直接在代码中按
-
Eclipse 示例代码
- Eclipse 官方提供了很多示例代码,展示了如何使用各种 API,这些示例非常有价值。
- 在 GitHub 上可以找到:https://github.com/eclipse-platform/eclipse.platform/tree/master/examples
-
开源项目
- 阅读一些著名的 Eclipse 插件的源码是学习 API 的最佳方式之一。
- Checkstyle (代码风格检查插件)
- FindBugs / SpotBugs (静态代码分析插件)
- Lombok (虽然它现在是一个独立项目,但其早期是作为 Eclipse 插件存在的)
- Git integration for Eclipse (Git 客户端插件)
- 阅读一些著名的 Eclipse 插件的源码是学习 API 的最佳方式之一。
| API 类型 | 主要用途 | 核心包 | 学习重点 |
|---|---|---|---|
| JDT API | 操作 Java 代码:分析、修改、编译、重构。 | org.eclipse.jdt.core, org.eclipse.jdt.core.dom |
如何获取 ICompilationUnit,如何解析 AST,如何遍历和修改语法树。 |
| Platform API | 构建插件界面和功能:管理项目、添加菜单/视图、处理文件等。 | org.eclipse.core.resources, org.eclipse.ui, org.eclipse.jface |
如何使用 plugin.xml 定义扩展,如何实现 Handler 或 ViewPart。 |
对于大多数 Java 如果你想要增强或创建与 Java 代码深度相关的工具,JDT API 是你的主战场,而如果你想创建一个通用的 Eclipse 插件,或者让你的 Java 工具拥有更好的用户界面,Platform API 就是必不可少的。
从阅读官方的 PDE 帮助文档开始,结合动手实践,是掌握 Eclipse API 最有效的方法。
