Eclipse插件开发中的Java项目模型_第1页
Eclipse插件开发中的Java项目模型_第2页
Eclipse插件开发中的Java项目模型_第3页
Eclipse插件开发中的Java项目模型_第4页
Eclipse插件开发中的Java项目模型_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、?eclipse插件开发中的java 项目模型java 项目模型eclipse的项目有很多种,包括java 项目、 c+ 项目、 c#项目等,每种项目都有自己的特点。咱们最常接触到的项目确实是java 项目,因此咱们重点来讲解一下java 项目模型。java 模型是用来对与创建、 编辑和构建java 程序相关联的对象进行建模的一些类。java模型类是在中概念的。这些类实现资源的特定于java 的行为, 并进一步将java 资源分解成模型元素。java 模型的继承结构图如下图。图 java 模型的继承结构图ijavaelement的子类接口还有imethod 、itype 等,在那个地址没有全数

2、列出。java模型中的类结构比较简单,级次也超级少。下面介绍一下各个接口的要紧方式。(1) ijavaelement exists :判定元素是不是存在。处置 java 元素与处置资源对象相似。当利用 java 元素时,事实上是在利用某些底层的模型对象的句柄。必需利用exists()来确信元素是不是真正存在于工作空间中。getelementname:返回元素的名称。getjavamodel :返回其对应的javamodel ,返回值类型是ijavamodel 。getjavaproject:返回元素对应的java 工程,返回值类型是ijavaproject。getparent :返回父元素,返

3、回值类型是ijavaelement 。getresource :返回元素对应的资源,返回值类型是iresource 。(2) iclassfile 此接口代表编译后的class 二进制文件。isclass :判定是不是是java 类。isinterface:判定是不是是接口。(3) icompilationunit 此接口代表java 源文件。getalltypes:返回此文件中概念的所有类型,返回值类型是itype。一个 java 文件中能够概念多个类型。getprimary :返回主类型,返回值类型是icompilationunit。(4) ijavamodel 此接口表示根 java 元

4、素, 对应于工作空间。是所有具有 java 性质的项目的父类。它关于 java 项目的作用和iworkspaceroot 关于 iproject的作用相似。contains :判定是不是存在指定的资源。getjavaproject:返回指定名字的java 项目,返回值类型是ijavaproject。getjavaprojects:返回所有的java 项目,返回值类型是ijavaproject。getworkspace :返回所在的工作空间。(5) ijavaproject 此接口表示java 项目。ijavaelement findelement(ipath path):返回项目的path 途

5、径下的 java 元素。ipackagefragment findpackagefragment(ipath path):返回项目的path 途径下的ipackagefragment 。ipackagefragmentroot findpackagefragmentroot(ipath path):返回项目的path 途径下的 ipackagefragmentroot 。findtype :依照一个全名取得此元素的类型,此类有数个重载方式,返回值类型为itype 。getallpackagefragmentroots:返回所有的ipackagefragmentroot ,返回值类型是ipack

6、agefragmentroot。getoutputlocation:返回输前途径,返回值类型是ipath 。getrequiredprojectnames:返回依托项目,返回值类型是字符串数组。setoutputlocation:设定输前途径。(6) ipackagefragment 此接口表示整个包或包的一部份。createcompilationunit:创建一个icompilationunit,返回值类型是icompilationunit。getclassfile:返回指定名称对应的iclassfile,返回值类型是iclassfile。getclassfiles:返回所有的iclassf

7、ile,返回值类型是iclassfile。getcompilationunit:返回指定名称对应的icompilationunit,返回值类型是icompilationunit。getcompilationunits:返回所有icompilationunit,返回值类型是icompilationunit。getkind :判定此包是源码包仍是一般包,返回值是int型,如等于ipackage- 那么是源文件包,如等于那么为一般包。hassubpackages:是不是有子包。(7) ipackagefragmentroot 此接口表示一组包段,并将各段映射至底层资源,它能够是文件夹、jar或 zi

8、p 文件。createpackagefragment:创建一个ipackagefragment ,返回值类型是ipackage- fragment 。getkind :此包段是源码包段仍是二进制包段,返回值类型是int ,若是等于那么是源文件包段,若是等于ipackagefragment- 那么为二进制包段。getpackagefragment :依照包名返回对应的ipackagefragment 。经常使用工具类(1) javacore( 概念在包下 ) javacore 从 plugin继承,它是jdt插件的生命周期治理器。只是关于第三方插件开发人员来讲,它的重要性更多地体此刻它提供的一些

9、工具类方式中。ijavaelement create(ifile file):从文件创建对应的java 元素。ijavaelement create(ifolder folder):从文件夹创建对应的java 元素。ijavaproject create(iproject project):取得 iproject对应的 ijavaproject。ijavaelement create(iresource resource):从资源创建对应的java 元素。ijavamodel create(iworkspaceroot root):从工作空间根目录取得对应的ijavamodel 。iclass

10、file createclassfilefrom(ifile file):从文件创建对应的iclassfile。icompilationunit createcompilationunitfrom(ifile file):从文件创建对应的icompilationunit。style=line-height: ; text-indent: 21pt(2) javaui( 概念在包下 ) javaui 中概念了经常使用的java 插件界面相关的方式。createpackagedialog:创建一个包选择对话框,返回值是selectiondialog。createtypedialog:创建一个类型选

11、择对话框,返回值是selectiondialog。ieditorpart openineditor(ijavaelement element):用编辑器打开指定的java 元素并返回编辑器实例。revealineditor(ieditorpart part, ijavaelement element):在编辑器中定位元素element 。插件开发中常常会碰着一些经常使用的技术,把握这些技术能够极大地提高插件的开发效率,而且能够减小插件的体积。下面列出一些常见的技术。(1) 由一个一般项目取得java 项目java 项目是一种特殊的项目,需要注意的是ijavaproject并非是从iprojec

12、t继承的。不能将一个iproject对象强制转换成一个ijavaproject对象, 也不能把一个ijavaproject实例赋值给iproject变量。由 iproject项目取得java 项目的方式:ijavaproject javapoject = (iproject); 由 ijavaproject取得 iproject的方式:挪用 ijavaproject的 iproject getproject(); (2) 取得工作空间中的所有java 项目咱们能够第一取得工作空间中的所有项目,然后逐个进行转换。 只是这不免麻烦了一些,下面介绍更好的方式。ijavamodel 是所有 java

13、项目的根, 通过它就能够够取得所有的java项目:1.iworkspaceroot root = ().getroot(); 2.ijavamodel jmodel = (root); 3.ijavaproject jproject = (); (3) 打开 java 编辑器并显示java 编译单元的特定成员代码如下:4.void showmethod(imember member) 5. icompilationunit cu = (); 6. ieditorpart javaeditor = (cu); 7. (javaeditor, member); 8. (4) 在工程下创建一个包,并

14、创建一个文件(5) 打开【打开类型】对话框以下代码段利用javaui类来打开【打开类型】对话框:9.new progressmonitordialog(parent), 10.(), 用类似方式还能够创建【打开包】和【打开要紧类型】对话框。(6) 打包指定的文件咱们写一些工具的时候或许需要把文件打成jar包,然后进行发布到应用效劳器等操作,挪用jdt提供的类可简化那个操作(用到的打jar 包的类都在下 ) :11.jarpackagedata description= new jarpackagedata(); 12.ipath location= new path(c:/); 13.(loc

15、ation); 14.(true); 15.(maintype); 16.(filestoexport); 17.ijarexportrunnable runnable= 18.(parentshell); 19.new progressmonitordialog(parentshell).run(true,true, runnable); 参数 maintype 表示 jar 包的 main 类, filestoexport为要打包的文件。(7) 自动设置java 项目的构建途径有一些插件会将需要的jar包自动设置到构建途径上,比如利用wtp 的新建向导新建web项目的时候就会把web开发需

16、要的jar包自动放入项目的构建途径,利用 pde的“将项目转换为插件项目”功能后项目的构建途径中就增加了插件依托项的库。那么它们是怎么实现的呢?java 项目的构建途径有如下几种:源文件夹、二进制库、依托项目、类途径变量和类途径容器。图源文件夹图构建依托项目图 jar和类文件夹依托每种不同的构建途径都有不同的作用:源文件夹是把源码进行构建的途径,二进制库是导入少量jar包的方式, 依托项目是供多项目分模块开发利用的,利用类途径变量能够幸免二进制包的途径依托,而类途径容器那么为大量二进制库的引入提供了方便。jdt为这些不同的构建途径提供了一个统一的接口:iclasspathentry,只要挪用i

17、javaproject的 setrawclasspath方式就能够够为项目设定构建途径。能够看到 setrawclasspath方式需要一个iclasspathentry数组,数组中的元素确实是要设置的每一个构建途径。前面提到的javacore 类提供了一系列的静态方式来帮忙咱们生成不同的iclasspathentry,而不必关注生成的细节。下面来看不同构建途径的添加方式。源文件夹。利用方式。下面的代码的作用是构造项目myproject的源文件夹src的类途径条款:(new path(/myproject/src); 二进制库iclasspathentry。利用方式。下面的代码确实是构造myp

18、roject的类文件 lib的类途径条款:path(/myproject/lib),null, null,false); 以下类途径条款具有源代码连接:设定关联源代码包有利于代码的跟踪调试。依托项目。利用方式。下面的代码确实是构造依托项目myframework:iclasspathentry prjentry = (new path(/myframework), true); 类途径变量。利用方式。类途径变量关于整个工作空间来讲是全局的,而且能够通过 javacore 方式 getclasspathvariable 和 setclasspathvariable 来处置。可能会注册自动的类途径变

19、量初始化方式,当启动工作空间时,通过扩展点 . 来挪用该类途径变量初始化方式。以下类途径条款指示一个库,该库的位置寄存在变量home 中。利用变量src_home和src_root来概念源代码连接:iclasspathentry varentry = ( 20. new path(home/), etfullpath(), project 21.lucenesrcjar).getfullpath(), null, 22. new iclasspathentry + 1; 23.lib + fileseparator + lucenejar); 24.lib + fileseparator +

20、lucenesrcjar); 25.iclasspathentry entry) 26.(), e); 下面说明一下代码中的重点部份。27.iclasspathentry oldpaths = (); 读取项目原有的构建途径条款。28.iclasspathentry lucenelibentry = ( 29.(lib + fileseparator + lucenejar).getfullpath(), 30.(lib + fileseparator + lucenesrcjar).getfullpath(), 31.null, false); 这一句构建lucene 的 jar包。第 1

21、个参数是二进制jar包的位置, 咱们的二进制jar包的位置为项目途径下的lib/。第 2 个参数是jar包对应的源码包的位置。第 3个参数为源码包的根途径,因为有的源码jar 包的源码根途径不是jar 包的根途径,比如 simplejta的源码 jar包的格式如下图。图 jar 包的结构关于这种情形就要指定第2个参数为“ src ”,lucene 的源码包的源码根途径确实是jar包的根途径,因此咱们设置此参数为null 。第 4 个参数表示是不是导出,咱们设置为false 。(3) url lucenelib = ().getbundle().getentry(resoucelib + file- separator + lucenejar); 咱们把“”、“放到咱们插件的“ resoucelib ”目录下,当用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论