eclipse插件开发 JDT

上传人:ali****an 文档编号:109916435 上传时间:2019-10-28 格式:DOCX 页数:80 大小:158.32KB
返回 下载 相关 举报
eclipse插件开发 JDT_第1页
第1页 / 共80页
eclipse插件开发 JDT_第2页
第2页 / 共80页
eclipse插件开发 JDT_第3页
第3页 / 共80页
eclipse插件开发 JDT_第4页
第4页 / 共80页
eclipse插件开发 JDT_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《eclipse插件开发 JDT》由会员分享,可在线阅读,更多相关《eclipse插件开发 JDT(80页珍藏版)》请在金锄头文库上搜索。

1、JDT核心JDT 核心JDT 核心(org.eclipse.jdt.core)是用于定义 Java 核心元素和 API 的插件。在开发特定于 Java 的功能部件时,总是应该将此插件列示为先决条件。JDT 核心包使您能够访问 Java 模型对象和无外设 Java IDE 基础结构。JDT 核心包包括: org.eclipse.jdt.core 定义用于描述 Java 模型的类。 piler 定义编译器基础结构的 API。 org.eclipse.jdt.core.dom 支持可用于检查编译单元的结构直到语句级别的“抽象语法树”(AST)。 org.eclipse.jdt.core.eval 支

2、持对代码片段编辑测试窗或调试器中的代码段进行评估。 org.eclipse.jdt.core.jdom 支持 Java“文档对象模型”(DOM),它可用于表示 Java 编译单元的结构。 org.eclipse.jdt.core.search 支持在工作空间的 Java 模型中搜索与特定描述相匹配的 Java 元素。 org.eclipse.jdt.core.util 提供用于处理 .class 文件和 Java 模型元素的实用程序类。 从版本 3.0 起,建议不要使用 org.eclipse.jdt.core.jdom。应使用 org.eclipse.jdt.core.dom 来完成对编译单

3、元的结构的处理。Java 模型Java 模型是用来对与创建、编辑和构建 Java 程序相关联的对象进行建模的一些类。Java 模型类是在 org.eclipse.jdt.core 中定义的。这些类实现资源的特定于 Java 的行为,并进一步将 Java 资源分解成模型元素。Java 元素包 org.eclipse.jdt.core 定义了用来对组成 Java 程序的元素建模的一些类。JDT 使用内存中的对象模型来表示 Java 程序的结构。此结构是从项目的类路径派生的。模型是分层的。可以将程序的元素分解成子元素。处理 Java 元素与处理资源对象相似。当使用 Java 元素时,实际上是在使用某

4、些底层的模型对象的句柄。必须使用 exists() 协议来确定元素是否真正存在于工作空间中。下表总结了不同种类的 Java 元素。元素描述IJavaModel表示根 Java 元素,对应于工作空间。所有具有 Java 性质的项目的父代。它还允许访问不具有 java 性质的项目。IJavaProject表示工作空间中的 Java 项目。(IJavaModel 的子代)IPackageFragmentRoot表示一组包段,并将各段映射至底层资源,它可以是文件夹、JAR 或 ZIP 文件。(IJavaProject 的子代)IPackageFragment表示工作空间中的一个部分,对应于整个包或者包

5、的一部分。(IPackageFragmentRoot 的子代)ICompilationUnit表示 Java 源(.java)文件。(IPackageFragment 的子代)IPackageDeclaration表示编译单元中的软件包声明。(ICompilationUnit 的子代)IImportContainer表示编译单元中的包导入声明的集合。(ICompilationUnit 的子代)IImportDeclaration表示单个包导入声明。(IImportContainer 的子代)IType表示编译单元内的源类型,或者是类文件中的二进制类型。IField表示类型中的字段。(IType

6、 的子代)IMethod表示类型中的方法或构造函数。(IType 的子代)IInitializer表示类型中的静态或实例初始化方法。(IType 的子代)IClassFile表示已编译(二进制)类型。(IPackageFragment 的子代)ITypeParameter 表示类型参数。(不是任何 Java 元素的子元素,可使用 IType.getTypeParameter(String) 或 IMethod.getTypeParameter(String) 获得)ILocalVariable 表示方法或初始化方法中的局部变量。(不是任何 Java 元素的子元素,可使用 ICodeAssist

7、.codeSelect(int, int) 获得)所有 Java 元素都支持 IJavaElement 接口。某些元素显示在“包”视图中。这些元素实现 IOpenable 接口,原因是必须在打开它们之后才能浏览它们。下图说明这些元素在“包”视图中是如何表示的。实现 IOpenable 的 Java 元素基本上是根据在底层资源文件中找到的信息创建的。相同的元素是在资源导航器视图中按类别表示的。 其他元素对应于组成 Java 编译单元的项。下图显示 Java 编译单元和内容大纲窗口(它显示编译单元中的源元素)。 因为这些元素可以提供相应的源代码,所以它们实现了 ISourceReference 接

8、口。(当在内容大纲窗口中选择了这些元素时,就会在 Java 编辑器中显示它们相应的源代码)。Java 元素及其资源许多 Java 元素对应于工作空间中的通用资源。当您想根据通用资源来创建 Java 元素时,最好是从类 JavaCore 开始。以下代码段说明如何从 Java 元素的相应资源中获取 Java 元素。 private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) IJavaProject myJavaProject = JavaCore.create(myProject)

9、; if (myJavaProject = null) / the project is not configured for Java (has no Java nature) return; / get a package fragment or package fragment root IJavaElement myPackageFragment = JavaCore.create(myFolder); / get a .java (compilation unit), .class (class file), or / .jar (package fragment root) IJa

10、vaElement myJavaFile = JavaCore.create(myFile); 一旦有了 Java 元素,就可以使用 JDT API 来遍历和查询模型。还可以查询包含在 Java 元素内的非 Java 资源。 private void createJavaElementsFrom(IProject myProject, IFolder myFolder, IFile myFile) . / get the non Java resources contained in my project. Object nonJavaChildren = myJavaProject.getN

11、onJavaResources(); . Java 项目当根据简单项目来创建 Java 项目时,JavaCore 将检查项目是否是用 Java 性质来配置的。JDT 插件使用项目性质来将项目指定为具有 Java 行为。当“新建 Java 项目”向导创建项目时,将为项目指定此性质(org.eclipse.jdt.core.JavaCore#NATURE_ID)。如果未对项目配置 Java 性质,则在要求创建项目时,JavaCore 将返回 null。JavaCore 还用来维护 Java 类路径,包括用于查找源代码和库的位置以及用于生成输出二进制(.class)文件的位置。什么是 Java 项目

12、的唯一特征?Java 项目将它们的类路径记录在“.classpath”文件中,并将 Java 增量项目构建器添加到项目的构建规范中。否则,它们只是常规项目,并且可以由插件利用其他性质(和其他增量构建器)来配置。对于那些想要利用除了它们自己的行为之外的 Java 行为来配置项目的插件,它们通常使用 NewJavaProjectWizardPage 来为项目指定除了它们自己的定制性质或行为之外的 Java 性质。IJavaModel 可以认为是工作空间中具有 Java 项目性质的所有项目的父代(因此,可以当作 IJavaProject)。处理 Java 代码插件可以使用 JDT API 来创建类或

13、接口、将方法添加到现有类型中或者改变方法的类型。改变 Java 对象最简单的方法就是使用 Java 元素 API。可以使用更常见的技术来处理 Java 元素的初始源代码。使用 Java 元素来修改代码生成编译单元 通过程序来生成编译单元最简单的方法是使用 IPackageFragment.createCompilationUnit。指定编译单元的名称和内容。于是在包中创建了编译单元,并返回新的 ICompilationUnit。通常,可以通过在对应包目录的相应文件夹中创建扩展名为“.java”的文件资源来按类别创建编译单元。使用类属资源 API 对于 Java 工具是一种旁门左道,因此,在通知

14、类属资源更改侦听器以及 JDT 侦听器将 Java 模型更新为新编译单元之前,Java 模型不会更新。修改编译单元 大部分对 Java 源代码的简单修改可以使用 Java 元素 API 来完成。例如,可以通过编译单元查询类型。一旦您具有 IType,就可以使用诸如 createField、createInitializer、createMethod 或 createType 的协议来将源代码成员添加至类型。在这些方法中提供了源代码以及关于成员的位置的信息。ISourceManipulation 接口定义 Java 元素的常见源代码处理。这包括用于重命名、移动、复制或删除类型的成员的方法。工作副

15、本 可以通过处理编译单元来修改代码(于是修改了底层 IFile)或人们可以修改编译单元的内存副本(称为工作副本)。工作副本是使用 getWorkingCopy 方法从编译单元中获取的。(注意,要创建工作副本,编译单元不需要存在于 Java 模型中。)当不再需要这种工作副本时,创建这种工作副本的人员应负责使用 discardWorkingCopy 方法来废弃它。工作副本修改内存缓冲区。getWorkingCopy() 方法创建缺省缓冲区,但是客户机可以使用 getWorkingCopy(WorkingCopyOwner, IProblemRequestor, IProgressMonitor) 方法提供它们自己的缓冲区实现。客户机可以直接处理此缓冲区的文本。如果客户机直接处理文本,则它们必须经常使用 reconcile(int, boolean, WorkingCopyOwner,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号