您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Eclipse插件开发中的Java项目模型
Eclipse插件开发中的Java项目模型Eclipse插件开发中的Java项目模型是比较重要的内容,也是我们最长接触到的。本文将详细的为大家讲解Java项目模型。AD:Java项目模型Eclipse的项目有很多种,包括Java项目、C++项目、C#项目等,每种项目都有自己的特点。我们最常接触到的项目就是Java项目,因此我们重点来讲解一下Java项目模型。Java模型是用来对与创建、编辑和构建Java程序相关联的对象进行建模的一些类。Java模型类是在org.eclipse.jdt.core中定义的。这些类实现资源的特定于Java的行为,并进一步将Java资源分解成模型元素。Java模型的继承结构图如图3.13所示。图3.13Java模型的继承结构图IJavaElement的子类接口还有IMethod、IType等,在这里没有全部列出。Java模型中的类结构比较简单,级次也非常少。下面介绍一下各个接口的主要方法。(1)IJavaElementexists:判断元素是否存在。处理Java元素与处理资源对象相似。当使用Java元素时,实际上是在使用某些底层的模型对象的句柄。必须使用exists()来确定元素是否真正存在于工作空间中。getElementName:返回元素的名称。getJavaModel:返回其对应的JavaModel,返回值类型是IJavaModel。getJavaProject:返回元素对应的Java工程,返回值类型是IJavaProject。getParent:返回父元素,返回值类型是IJavaElement。getResource:返回元素对应的资源,返回值类型是IResource。(2)IClassFile此接口代表编译后的class二进制文件。isClass:判断是否是Java类。isInterface:判断是否是接口。(3)ICompilationUnit此接口代表Java源文件。getAllTypes:返回此文件中定义的所有类型,返回值类型是IType[]。一个Java文件中可以定义多个类型。getPrimary:返回主类型,返回值类型是ICompilationUnit。(4)IJavaModel此接口表示根Java元素,对应于工作空间。是所有具有Java性质的项目的父类。它对于Java项目的作用和IWorkspaceRoot对于IProject的作用相似。contains:判断是否存在指定的资源。getJavaProject:返回指定名字的Java项目,返回值类型是IJavaProject。getJavaProjects:返回所有的Java项目,返回值类型是IJavaProject[]。getWorkspace:返回所在的工作空间。(5)IJavaProject此接口表示Java项目。IJavaElementfindElement(IPathpath):返回项目的path路径下的Java元素。IPackageFragmentfindPackageFragment(IPathpath):返回项目的path路径下的IPackageFragment。IPackageFragmentRootfindPackageFragmentRoot(IPathpath):返回项目的path路径下的IPackageFragmentRoot。findType:根据一个全名取得此元素的类型,此类有数个重载方法,返回值类型为IType。getAllPackageFragmentRoots:返回所有的IPackageFragmentRoot,返回值类型是IPackageFragmentRoot[]。getOutputLocation:返回输出路径,返回值类型是IPath。getRequiredProjectNames:返回依赖项目,返回值类型是字符串数组。setOutputLocation:设定输出路径。(6)IPackageFragment此接口表示整个包或者包的一部分。createCompilationUnit:创建一个ICompilationUnit,返回值类型是ICompilationUnit。getClassFile:返回指定名称对应的IClassFile,返回值类型是IClassFile。getClassFiles:返回所有的IClassFile,返回值类型是IClassFile[]。getCompilationUnit:返回指定名称对应的ICompilationUnit,返回值类型是ICompilationUnit。getCompilationUnits:返回所有ICompilationUnit,返回值类型是ICompilationUnit[]。getKind:判断此包是源码包还是普通包,返回值是int型,如等于IPackage-FragmentRoot.K_SOURCE则是源文件包,如等于IPackageFragmentRoot.K_BINARY则为普通包。hasSubpackages:是否有子包。(7)IPackageFragmentRoot此接口表示一组包段,并将各段映射至底层资源,它可以是文件夹、JAR或ZIP文件。createPackageFragment:创建一个IPackageFragment,返回值类型是IPackage-Fragment。getKind:此包段是源码包段还是二进制包段,返回值类型是int,如果等于IPackageFragmentRoot.K_SOURCE则是源文件包段,如果等于IPackageFragment-Root.K_BINARY则为二进制包段。getPackageFragment:根据包名返回对应的IPackageFragment。常用工具类(1)JavaCore(定义在org.eclipse.jdt.core包下)JavaCore从Plugin继承,它是JDT插件的生命周期管理器。不过对于第三方插件开发人员来说,它的重要性更多地体现在它提供的一些工具类方法中。IJavaElementcreate(IFilefile):从文件创建对应的Java元素。IJavaElementcreate(IFolderfolder):从文件夹创建对应的Java元素。IJavaProjectcreate(IProjectproject):得到IProject对应的IJavaProject。IJavaElementcreate(IResourceresource):从资源创建对应的Java元素。IJavaModelcreate(IWorkspaceRootroot):从工作空间根目录得到对应的IJavaModel。IClassFilecreateClassFileFrom(IFilefile):从文件创建对应的IClassFile。ICompilationUnitcreateCompilationUnitFrom(IFilefile):从文件创建对应的ICompilationUnit。style=LINE-HEIGHT:17.5pt;TEXT-INDENT:21pt(2)JavaUI(定义在org.eclipse.jdt.ui包下)JavaUI中定义了常用的Java插件界面相关的方法。createPackageDialog:创建一个包选择对话框,返回值是SelectionDialog。createTypeDialog:创建一个类型选择对话框,返回值是SelectionDialog。IEditorPartopenInEditor(IJavaElementelement):用编辑器打开指定的Java元素并返回编辑器实例。revealInEditor(IEditorPartpart,IJavaElementelement):在编辑器中定位元素element。插件开发中经常会碰到一些常用的技巧,掌握这些技巧可以极大地提高插件的开发效率,并且可以减小插件的体积。下面列出一些常见的技巧。(1)由一个普通项目得到Java项目Java项目是一种特殊的项目,需要注意的是IJavaProject并不是从IProject继承的。不能将一个IProject对象强制转换成一个IJavaProject对象,也不能把一个IJavaProject实例赋值给IProject变量。由IProject项目得到Java项目的方式:IJavaProjectjavaPoject=JavaCore.create(IProject);由IJavaProject得到IProject的方式:调用IJavaProject的IProjectgetProject();(2)得到工作空间中的所有Java项目我们可以首先得到工作空间中的所有项目,然后逐个进行转换。不过这不免麻烦了一些,下面介绍更好的方式。IJavaModel是所有Java项目的根,通过它就可以得到所有的Java项目:1.IWorkspaceRootroot=ResourcesPlugin.getWorkspace().getRoot();2.IJavaModeljModel=JavaCore.create(root);3.IJavaProjectjProject[]=jModel.getJavaProjects();(3)打开Java编辑器并显示Java编译单元的特定成员代码如下:1.voidshowMethod(IMembermember){2.ICompilationUnitcu=member.getCompilationUnit();3.IEditorPartjavaEditor=JavaUI.openInEditor(cu);4.JavaUI.revealInEditor(javaEditor,member);5.}(4)在工程下创建一个com.cownew包,并创建一个Hello.java文件(5)打开【打开类型】对话框以下代码段使用JavaUI类来打开【打开类型】对话框:1.newProgressMonitorDialog(parent),2.SearchEngine.createWorkspaceScope(),用类似方法还可以创建【打开包】和【打开主要类型】对话框。(6)打包指定的文件我们写一些工具的时候也许需要把文件打成jar包,然后进行发布到应用服务器等操作,调用JDT提供的类可简化这个操作(用到的打Jar包的类都在org.eclipse.ui.jarpackager下):1.JarPackageDatadescription=newJarPackageData();2.IPathlocation=newPath(C:/cownew.jar);3.description.setJarLocation(location);4.description.setSaveManifest(true);5.description.setManifestMainClass(mainType);6.description.setElements(filestoExport);7.IJarExportRunnablerunnable=8.description.createJarExportRunnable(parentShell);9.newProgressMonitorDialog(parentShell).run(true,true,runnable);参数mainType表示Jar包的main类,filestoExport为要打包的文件。(7)自动设置Java项目的构建路径有一些插件会将需要的jar包自动设置到构建路径上,比如使用WTP的新建向导新建web项目的时候就会把web开发需要的jar包自动放入项目的构建路径,使用PDE的“将项目转换为插件项目”功能后项目的构建路径中就增加了插件依赖项的库。那么它们是怎么实现的呢?Java项目的构建路径有如下几种:源文件夹、二进制库、依赖项目、类路径变量和类路径容器。图3.14源文件夹图3.15构建依赖项目图3.16J
本文标题:Eclipse插件开发中的Java项目模型
链接地址:https://www.777doc.com/doc-6969596 .html