eclipse – 整合开发工具 基础篇
0.环境说明n 操作系统 ¨ Microsoft Windows XP Professional ¨ Service Pack 2
n Eclipse 版本 ¨ Version:Eclipse 3.0.1 SDK (Release) ¨ Build id:200409161125 ¨ File Name:eclipse-SDK-3.0.1-win32.zip
n 参考数据 ¨ Eclipse‘s Help ¨ O‘REILLY Eclipse整合开发工具 ¨ 博硕文化 Eclipse实作手册-活用Java整合开发环境
1.Eclipse简介Eclipse就像软件开发者的『打铁铺』,它一开始备有火炉、铁钻与铁锤。就像铁匠会用现有的工具打造新的工具,也能用Eclipse打造新工具来开发软件-这些新工具可扩充Eclipse的功能。(Eclipse其中一个卖点就是它的扩充性)
1.1历史背景Eclipse这样功能完整且成熟的开发环境,是由蓝色巨人IBM所释出。IBM花了4千万美金来开发这个IDE(Integrated Development Environment)。第一版1.0在2001年11月释出,随后逐渐受到欢迎。 Eclipse已经成为开放原始码计划(Open Source Project),大部分的开发扔然掌握在IBM手中,但是有一部份由的软件联盟主导。(http://www.) Eclipse项目由Project Management Committee(PMC)所管理,它综观项目全局,Eclipse项目分成3个子项目: l 平台-Platform l 开发工具箱-Java Development Toolkit(JDT) l 外挂开发环境-Plug-in Development Environment(PDE) 这些子项目又细分成更多子项目。例如Platform子项目包含数各组件,如Compare、Help与Search。JDT子项目包括三各组件:User Interface(UI)、核心(Core)及除错(Debug)。PDE子项目包含两各组件:UI与Core。
1.2开发原始码软件Eclipse是开放原始码,结果很多人在使用的时候都不注重合法权的问题。开放原始码软件让使用者能够取得软件的原始码,有权去修改和散布这个软件。如果想修改软件,这件事的另一面就是,除非其它人对修改后的软件也有相同的权力,否则是不能散布修改后的软件,这种权利和著作权(copyright)相反,开放原始码项目中有时称之为著作义(copyleft)。 有些开放原始码许可书,坚持要求任何和其它开发原始码合组成的软件也必须是开放原始码。然而,Eclipse使用的开放原始码许可书:公共公众许可书-Common Public License(CPL)作为授权方式,设计上是可以容许商业利益的。CPL可以容许Eclipse和其它开放原始码软件合组时,能够以更严谨的许可书散布软件,以求用于商业途径。CPL经过Open Software Initiative(OSI)认证,其内容符合开放原始码授权的需求。
1.3 Eclipse版本介绍可以从网站(http://www./downloads)下载,可以发现『最新』与『最好』的版本,这两种版本通常不一样,基本上有四种版本-或建置(build)可供下载: l 释出版(Release builds) 由Eclipse开发团队所宣称的主要稳定版本。Release builds经过完整测试,并具有一致性、定义清楚的功能。它的定位就跟上市的商业软件一样。 l 稳定版(Stable builds) 比Release build新一级的版本,经由Eclipse开发团队测试,并认定它相当稳定。新功能通常会在此过渡版本出现。它的定位就跟商业软件的beta版一样。 l 整合版(Integration builds) 此版本的各个独立的组件已经过Eclipse开发团队认定具稳定度,但不保证兜在一起没问题。若兜在一起够稳定,它就有可能晋级成Stable build。 l 当日最新版(Nightly builds) 此版本显然是从最新的原始码产生出来的。可想而知,此版本当然不保证它跑起来没问题,搞不好还有严重的bug。
1.4跨语言、跨平台多数人认为Eclipse是Java IDE,不过,当下载Eclipse之后,除了有Java IDE(就是JDT),还有PDE。然而Eclipse是万用工具平台。JDT实际上是Eclipse的添加品,也就是外挂程序。Eclipse本身实际上是指Eclipse平台(Eclipse Platform),除了下载时能取得Java工具集以外,还提供各种工具的支持,所以平台本身只是相当小的ㄧ组软件。 如果想开发Java程序,用的是Eclipse随附的JDT外挂程序。如果想开发其它语言的程序,就需要拿到其它外挂程序,诸如CDT(C Development Toolkit)就可以开发C/C++程序。 Eclipse跨计算机语言,也跨人类的语言。相同的外挂机制可用来增加对不同语言的支持,这里使用一种特殊的外挂,叫做外挂程序片断(plug-in fragment)。IBM以捐出一个语言套件,支持中文(繁体与简体)、法文、德文、意大利文、日文、韩文、葡萄牙文(巴西)与西班牙文。 照理说Eclipse以Java写成,应该可以在任何的平台执行。但严格来说Eclipse不是跨平台的,因为它使用作业平台的原生图形来建置。因此要等SWT(Standard Widget Toolkit)移植到该平台,Eclipse才能在那个平台执行。但就现实而言到不是什么大问题,因为SWT已经被移植到数个常见平台上了,包括Windows、Linux/Motif、Linux/GTK2、Solaris、QNX、AIX、HP-UX与Mac OS X。
2. Eclipse PlatformEclipse平台的目的,是提供多种软件开发工具的整合机制,这些工具会实作成Eclipse外挂程序,平台必须用外挂程序加以扩充才有用处。Eclipse设计美妙之处,在于所有东西都是外挂,除了底层的核心以外。这种外挂设计让Eclipse具备强大扩充性,但更重要的是,此平台提供一个定义明确的机制,让各种外挂程序共通合作(透过延伸点extension points)与贡献(contributions)),因此新功能可以轻易且无缝地加入平台。
2.1概观第一次执行Eclipse时,会在Eclipse目录下建一个workspace的目录,根据预设,所有的工作都会存在此目录。若要备份工作目录,只要备份这个目录就行了。若要升级至新版的Eclipse,只要将这个目录拷贝过去即可。 用新版时得看看release notes,确保它支持前一版的workspace;若不支持,只要将旧的workspace子目录拷贝到新的Eclipse目录下即可。所有的喜好设定都会保留。
2.2架构Eclipse平台由数种组件组成:平台核心(platform kernel)、工作台(workbench)、工作区(workspace)、团队组件(tram component)以及说明组件(help)。
图2.0
2.3项目与资料夹若想要手动操作档案、拷贝或看档案大小,就得知道档案放哪里。但原生档案系统会随操作系统而变,这对在各个操作系统均需运作一致的程序会发生问题。为了解决此问题,Eclipse在档案系统之上提供了一个抽象层级。换句话说,它不使用内含档案的阶层式目录/子目录结构,反之,Eclipse在最高层级使用『项目』,并在项目之下使用数据夹。 根据预设,『项目』对应到workspace目录下的子目录,而『数据夹』对应到项目目录下的子目录。在Eclipse项目内的所有东西均是以独立与平台无关的方式存在。
2.4平台核心核心的任务是让每样东西动起来,并加载所需之外挂程序。当启动Eclipse时,先执行的就是这个组件,再由这个组件加载其它外挂程序。
2.5工作区(workspace)工作区负责管理使用者的资源,这些资源会被组织成一个(或多个)项目,摆在最上层。每个项目对应到Eclipse工作区目录下的ㄧ个子目录。每个项目可包含多个档案和数据夹;通常每个数据夹对应到一个在项目目录下的子目录,但数据夹也可连到档案系统中的任意目录。 每个工作区维护一个低阶的历史纪录,记录每个资源的改变。如此便可以立刻复原改变,回到前一个储存的状态,可能是前一天或是几天前,取决于使用者对历史纪录的设定。此历史纪录可将资源丧失的风险减到最少。 工作区也负责通知相关工具有关工作区资源的改变。工具可为项目标记一个项目性质(project nature),譬如标记为一个“Java项目”,并可在必要时提供配置项目资源的程序代码。
2.6工作台(workbench)Eclipse工作台(workbench)就如图2.1的画面,这是操作Eclipse时会碰到的基本图型接口,工作台是Eclipse之中仅次于平台核心最基本的组件,启动Eclipse后出现的主要窗口就是这个,workbench的工作很简单:让操作专案。它不懂得如何编辑、执行、除错,它只懂得如何找到项目与资源(如档案与数据夹)。若有它不能做的工作,它就丢给其它组件,例如JDT。 图2.1
工作台看起来像是操作系统内建的应用程序,可以说是Eclipse的特点,同时也是争议点。工作台本身可以说是Eclipse的图形操作接口,它是用Eclipse自己的标准图形工具箱(Standard Widget Toolkit-SWT)和JFace(建立在SWT之上)的架构。SWT会使用操作系统的图形支持技术,使得程序的外观感觉(look-and-feel)随操作系统而定。这一点和过去多数Java程序的做法很不同,即使是用Swing,也没有这样过。
2.6.1视图(View)工作台会有许多不同种类的内部窗口,称之为视图(view),以及一个特别的窗口-编辑器(editor)。之所以称为视图,是因为这些是窗口以不同的视野来看整各项目,例如图2.1,Outline的视图可以看项目中Java类别的概略状况,而Navigator的视图可以导览整各项目。
视图支持编辑器,且可提供工作台中之信息的替代呈现或导览方式。比方说:「书签」视图会显示工作台中的所有书签且会附带书签所关联的文件名称。「Navigator」视图会显示项目和其它资源。在已附加卷标的笔记本中,视图可独自呈现,也可以与其它视图形成堆栈。
图2.2
如果要启动在附加卷标的笔记本中的视图,只要按一下标签就行了。工作台会提供了许多又快又简单的方式供配置环境,其中包括卷标在笔记本的底端或顶端。
图2.3
视图有两个菜单,第一个是用鼠标右键按一下视图卷标来存取的菜单,它可以利用类似工作台窗口相关菜单的相同方式来操作视图。
图2.4
第二个菜单称为「视图下拉菜单」,存取方式是按一下向下箭头 。视图下拉菜单所包含的作业通常会套用到视图的全部内容,而不是套用到视图中所显示的特定项目。排序和过滤作业通常可在检视下拉菜单中找到。
图2.5
自订工作台是使用「Window」→「Reset Perspective」菜单作业的好时机。重设作业会将布置还原成程序状态。 可以从「Window」→「Show View」菜单中选取一个视图来显示它。视景决定了哪些视图是必要的,它会将这些视图显示在「Show View」子菜单中。选择「Show View」子菜单底端的「Other...」时,就可以使用其它的视图。这只是可用来建立自订工作环境的许多功能之一。
图2.6
2.6.2编辑器(Editor)编辑器是很特殊的窗口,会出现在工作台的中央。当打开文件、程序代码或其它资源时,Eclipse会选择最适当的编辑器打开文件。若是纯文字文件,Eclipse就用内建的文字编辑器打开(例如图2.7);若是Java程序代码,就用JDT的Java编辑器打开(例如图2.8);若是Word文件,就用Word打开(例如图2.9)。此Word窗口会利用Object Linking and Embedding-OLE,内嵌在Eclipse中。 图2.7
图2.8
在Windows中,工作台会试图启动现有的编辑器,如OLE(Object Linking and Embedding)文件编辑器。比方说,如果机器中安装了 Microsoft Word,编辑 DOC 档案会直接在工作台内开启 Microsoft Word(例如图2.9)。如果没有安装 Microsoft Word,就会开启 Word Pad。 图2.9
如果标签左侧出现星号 (*)(例如图2.9),就表示编辑器有未储存的变更。如果试图关闭编辑器或结束工作台,但没有储存变更,就会出现储存编辑器变更的提示。
工具列中的向后和向前箭头按钮,或利用 Ctrl+F6 加速键来切换编辑器。箭头按钮会移动通过先前的鼠标选取点,可以先通过档案中的多个点,之后才移到另一个点。 Ctrl+F6 会蹦现目前所选取的编辑器清单,依预设,会选取在现行编辑器之前所用的编辑器。(在 Macinosh 中,加速键是 Command+F6。)
2.6.3视景(Perspective)Eclipse提供数群育先选定的视图,并已事先定义好的方式排列,称之为视景(perspective)。所有视景的主要组件式编辑器。 每个视景的目的是执行某特定的工作,如编写Java程序,在每个视图以各种不同的观点处理工作,例如图2.10。 图2.10
若在Debug的视景中,其中一个视图会显示程序代码,另一个可能换显示变量目前的值,还有一个可能会显示程序的执行结果。例如图2.11。 图2.11
2.7重新排列视图和编辑器2.7.1放置游标放置光标表示视图可以定置在工作台窗口的哪里。当重新排列视图时,可能会出现几种不同的放置光标。
2.7.2重新排列视图可以变更「Navigator」视图在工作台窗口中的位置。 I. 按一下「Navigator」视图的标题列,并且拖曳视图以横跨工作台窗口。目前还不要放开鼠标按钮。 II. 当仍在工作台窗口的顶端拖曳视图时,请注意,各种放置光标时会出现。这些放置游标(请参阅上一节)表示当放开鼠标按钮时,视图会关联于光标所在的视图或编辑区而定置在哪里。请注意,这时会绘制用来强调显示的矩形,以提供视图将定置在哪里的其它回馈。 III. 将视图定置在工作台窗口中的任何位置,再检视这个动作的结果。 IV. 按一下并且拖曳视图的标题列,将视图重新定置在工作台窗口中的其它位置。请观察这个动作的结果。 V. 最后,将「Navigator」视图拖曳到「Outline」视图上面。这时会显示一个堆栈光标。如果放开鼠标按钮,「Navigator」就会和「Outline」视图一起堆放到附加卷标的笔记本中。
2.7.3并列编辑器工作台可以在编辑区中建立两组或更多组编辑器。也可以调整编辑区的大小,但不能将视图拖曳到编辑区。 I. 在「Navigator」视图中按两下可编辑的档案,以在编辑器区中开启至少两个编辑器。 II. 按一个编辑器的标示,将它拖曳到编辑器区域之外。不要放开鼠标按钮。 III. 请注意,如果试图将编辑器放到任何视图的顶端,或放在工作台窗口之外,就会出现限制光标。 IV. 仍按住鼠标按钮,将编辑器拖曳到编辑器区,沿着编辑器区的四边移动光标,以及在编辑器区中央另一开启的编辑器上移动光标。请注意,沿着编辑器区域的边缘会出现有方向箭头的放置光标,编辑器区域中央会出现堆栈放置光标。 V. 将编辑器定置在有方向箭头的放置光标上,使两个编辑器都出现在编辑器区域中。 VI. 请注意,必要时,也可以调整各编辑器和整个编辑区的大小来容纳编辑器和视图。 VII. 请务必观察编辑器标签的颜色(下图中有两个群组,一个群组在另一群组的上面) 蓝色 - 表示编辑器目前在作用中。 默认值(在 Windows XP 中呈灰色)- 表示编辑器是前次作用中的编辑器。如果有作用中的视图,它就是作用中视图目前在使用的编辑器。当使用会密切搭配编辑器的「Outline」和「内容」这类视图时,这一点非常重要。 VIII. 拖曳编辑器,将它定置在编辑器区的其它位置,请注意定置各种放置光标时所产生的行为。请继续尝试定置编辑器和视图及调整其大小,直到工作台的安排符合要求为止。图2.12说明将一个编辑器拖放到另一编辑器之下的布置。 图2.12
2.7.4重新排列附加标签的视图除了在工作台中拖放视图之外,也可以在附加卷标的笔记本内重新排列视图的次序。 I. 选择「Window」→「Reset Perspective」,将「Resource」视景重设回程序布置。 II. 按一下「Outline」标题列,然后在「Navigator」视图顶端加以拖曳。现在「Outline」将会堆栈在「Navigator」的顶端。 II. 按一下「Navigator」标签,将它拖曳到「Outline」标签的右侧。
IV. 光标到了「Outline」卷标右侧且变成堆栈光标之后,放开鼠标按钮。 请观察「Navigator」卷标,它现在已在「Outline」标签的右侧。
2.7.5最大化能够将视图或编辑器最大化,有时非常有用。将视图和编辑器两者最大化很容易。 n 如果要将视图最大化,请按两下它的卷标,或从卷标的蹦现菜单中选取「Maximize」。 n 如果要将编辑器最小化,请按两下编辑器卷标,或从卷标的蹦现菜单中选取「Minimize」。 将视图还原至程序大小的方法也类似(按两下或从菜单中选择「Restore」)。
2.8菜单和工具列
5 8 7 6 4 3 2 1 图2.13
1.菜单(Menu Bar) 2.工具列(Tool Bar) 3.快速视图(Fast View) 4.Package Explorer视图 5.Editor视图 6.快捷方式工具列(Shortcut Toolbar) 7.Outline视图 8.Tasks视图和Console视图
2.8.1菜单「File」菜单 这个菜单可以建立、储存、关闭、打印、汇入及汇出工作台资源以及结束工作台本身。
「Edit」菜单 这个菜单可协助操作编辑器区域中的资源
「Source」菜单
「Refactor」菜单 重构指令也可以在一些视图的快速菜单与Java编辑器中找到。
「Navigate」菜单 这个菜单可以寻找及导览工作台中显示的资源及其它成品。
「Search」菜单
Search Scopes Submenu(搜寻范围子菜单):
工作集对话框可以储存并命名范围。「搜寻范围」子菜单中亦会显示工作集的现有实例。 可在下列视图中透过所选资源与元素的快速菜单,来执行Java搜寻: n 「Package Explorer」 n 「Outline」视图 n 「Search Result」视图 n 「Hierarchy」视图 n 「Browsing」视图 Java编辑器中亦提供「Search」快速菜单。目前所选文字必须可解析成Java元素,才能执行搜寻。 所选Java元素的类型会定义所能使用的「Search」快速菜单。Java编辑器不会根据选项而限制可用的Java搜寻项清单。
「Project」菜单 「项目」菜单可以对工作台中的项目执行动作(建置或编译)。
「Run」菜单
「Windows」菜单 这个菜单可以显示、隐藏,以及另行在工作台中操作各种视图、视景和动作。
「Help」菜单 这个指令提供有关使用工作台的说明。
2.8.2图标和按钮「Navigator」视图图示 「Navigator」视图中可能会出现下列图示:
编辑区标记列 标记列(编辑区左侧)中可能会出现下列标记:
「Tasks」视图 「Tasks」视图可能会出现下列标记:
工具列按钮 下列按钮可能会出现在工作台工具列、视图的工具列以及快捷方式列中:
外部工具和 Ant 图示 物件
启动配置
Ant 视图
除错视图
2.9视景2.9.1新视景有几种方法可在这个工作台窗口内开启新视景: n 利用快捷方式列中的「Open Perspective」按钮 。 n 从「Window」→「Open Perspective」菜单中选取一个视景。
如果要利用快捷方式列按钮来开启一个视景,请执行下列动作: I. 按一下「Open Perspective」按钮 。 II. 这时会出现一个菜单,显示和「Window」→「Open Perspective」菜单相同的选项。请从菜单中选择「Other...」。
图2.14 III. 在「Select Perspective」对话框中,选择Debug,然后按一下OK。
图2.15 这时会显示「Debug」视景。 IV. 另外还有些有趣的事情值得注意。 ¨ 现在,窗口标题会指出「Debug」视景正在使用中。 ¨ 快捷方式列包含几个视景:原始「Resource」视景、新的「Debug」视景,以及少数几个其它视景。「Debug」视景按钮是已经下按的,表示它是现行视景。 ¨ 如果要显示视景的完整名称,请用鼠标右键按一下视景列,再勾选Show Text。
图2.16 V. 在快捷方式列中,按一下「Resource」视景按钮。这时「Resource」视景又会成为现行视景。请注意,每个视景所拥有的一组视图各不相同。
2.9.2新窗口除了在现行工作台窗口中开启视景之外,也可以在另一个窗口中开启新的视景。 依预设,新视景会开启在现行窗口中。可以利用「Window」→「Preferences」→「Workbench」→「Perspectives」来配置这个预设行为。
图2.17
2.9.3储存视景可以利用工作台来储存自己喜好的布置,供未来使用。 I. 在快捷方式列中,按一下「Resource」视景。现在「Resource」视景是在作用中。 II. 拖曳「Outline」视图,将它和「Navigator」视图堆放在一起。 III. 选择「Window」→「Save Perspective As...」 IV. 「Save Perspective As...」对话框可用来重新定义现有的视景,或建立新视景。 按一下OK来更新「Resource」视景,并在后续的确认对话框中按一下OK。如果重设视景或开启新视景,就会使用新的视景布置。
图2.18 V. 在「Resource」视景中移动「Outline」视图,现在,它和「作业」视图堆放在一起。 VI. 选择「Window」→「Reset Perspective」。请注意,「Outline」视图会和「Navigator」堆放在一起。原先,当第一次启动工作台时,它是在导览器下面,但由于储存视景时将「储存库」和「Outline」堆栈起来,因此,它现在就以此为起始布置。 VII. 选择「Window」→「New Window」来开启第二个窗口,以显示资源视景。请观察它,它在使用新储存的布置。 VIII. 关闭第二个窗口。 在变更过「Resource」视景之后,还有一个方法可用来回复原始布置。如果要将「Resource」视景重设回程序布置: I. 选择「Window」→「Preferences」。 II. 展开Workbench,然后选取Perspective。 III. 选取Resource视景, 然后按一下Reset按钮,再按一下OK。
图2.19 IV. 现在,视景储存状态的任何变更尚未完成。如果要更新正在处理的「Resource」视景现行复本,请从工作台的菜单列中选取「Window」→「Reset Perspective」。
2.9.4配置视景除了配置视景的布置之外,也可以控制视景的若干其它主要方面。其中包括: n 「New Window」。 n 「Window」→「Open Perspective」。 n 「Window」→「Show View」。 n 工具列所显示的各组动作。 请尝试自订这些项目之一。 I. 在快捷方式列中,按一下「Resource」视景。 II. 选取「Window」→「Customize Perspective...」 III. 选取Commands标签。 IV. 勾选Launch,然后按一下OK。
图2.20 V. 观察工具列,现在它含有除错 / 执行启动的按钮。
VI. 尝试过「Customize Perspective...」对话框中的其它选项之后,请选择「Window」→「Reset Perspective」,让视景返回原始状态。
2.10作业和标记标记有许多类型,包括书签、作业标记、除错岔断点和问题。这一节的重点是作业和「Tasks」视图。 「Tasks」视图会显示工作台中的所有作业。这个视图会显示与特定档案、特定档案中的特定行的相关作业,以及没有与任何特定档案相关的一般作业。
2.10.1不相关的作业未关联的作业不会关联于任何特定资源。如果要建立未关联的作业: I. 在「Tasks」视图中,按一下「Add Task」按钮 。这时会出现新作业对话框。 II. 输入作业的简要说明,再按 Enter 键。如果在输入说明时要取消对话框,请按 Esc。这时「Tasks」视图中会出现新的作业。
图2.21
2.10.2相关的作业相关作业会关联于资源中的某特定位置。如果要将作业关联于 Hello.java,请执行下列动作: I. 在「Navigator」视图中,按两下开启Java程序 (Hello.java)。 II. 在文字编辑器任何一行左侧的编辑器区域中,从标记列来存取快速菜单。标记列主要文字区域左侧的垂直列。 III. 从标记列的快速菜单中,选取Add Task。 标记列会显示包括书签、(相关作业的)作业标记和/或除错岔断点在内的任何标记。可以直接从档案中特定行左侧的标记列中,存取快速菜单来将各种标记关联于特定行。
图2.22 IV. 在Description字段中,输入要关联于文字文件中的这一行之作业的简要说明。
图2.23 V. 完成之后,按一下OK。 VI. 请注意,新的作业标记会出现在标记列中,就在新增作业的那一行左侧。另外,也请注意,新作业会出现在「Tasks」视图。 VII. 新增作业之后,请按一下编辑器中的第一行,或新作业所关联的行上面的任何其它行。 VIII. 在这点上,新增若干文字行到档案中。 IX. 请注意,当在上面新增了若干文字行时,作业标记会跟着档案中相关的行而在标记列中下移。当储存档案时,「Tasks」视图中的行号会被更新。 X. 在「Tasks」视图中,存取刚建立之作业的快速菜单。 XI. 选取Mark Completed。 XII. 现在,从标记的快速菜单选取Delete Completed Tasks。 XIII. 请注意,这时标记列的作业标记会消失,且会从「Tasks」视图中移除作业。
2.10.3开启档案「Tasks」视图提供两个开启作业的相关档案的方法: n 选取作业,然后从快速菜单中,选择Go To n 按两下作业 这两种方法都会开启档案编辑器,且会标示出选取的作业所关联的那一行。
2.11书签书签是导览至常用资源最简单的方式。这一节要看看书签的设定和移除,以及在「Bookmarks」视图中检视它们。 「Bookmarks」视图会显示工作台中的所有书签。如果要显示「Bookmarks」视图,请在「Resource」视景中,选取「Window」→「Show View」→「Bookmarks」。
2.11.1新增和检视书签工作台可以用书签来标示个别档案或档案内的位置。这一节要示范如何利用「Bookmarks」视图来设定若干书签及检视它们。 I. 从菜单列中,选取「Window」→「Show View」→「Bookmarks」。这时「Bookmarks」视图会出现在工作台中。 II. 编辑Hello.java檔。 III. 将光标放在档案中任何一行旁的编辑器标记列上。然后,从标记列的快速菜单中,选取Add Bookmark。
图2.24 当「Add Bookmark」对话框开启时,输入这个书签的说明。请输入「我的书签」。 IV. 请注意,标记列中会出现一个新书签。
图2.25 新书签也会出现在「Bookmarks」视图中。
图2.26 V. 在「Navigator」视图中,选取Hello.java檔。从主工作台菜单中,选取「Edit」→「Add Bookmark」。 这将会使用文件名称说明书签,来建立档案的书签。现在,请看看「Bookmarks」视图,其中有两个书签。
图2.27
2.11.2使用书签建立好若干书签之后,现在,将提供一些指示来说明如何取得书签相关档案的指示。 I. 在编辑器区域中,关闭所有档案。 II. 在「Bookmarks」视图中,按两下所建立的第一个书签(我的书签)。 III. 请注意,这时会有开启的编辑器显示书签所关联的档案,且会标示出书签所关联的那一行。 附注:「Bookmarks」视图支持用另一种方式来开启所选书签的相关档案,只要从书签的快速菜单中选取Go To就行了。 在「Bookmarks」视图中,选取导览器中的相关档案。 I. 在「Bookmarks」视图中,选取「我的书签」。 II. 从书签的快速菜单中,选择Shoe in Navigator。 III. 请注意,现在可以见到「Navigator」视图,且会自动选取Hello.java檔。Hello.java是「我的书签」所关联的档案。
2.11.3移除书签I. 在「Bookmarks」视图中,选取Hello.java(我们建立的第二个书签),再执行下列其中一项动作: ¨ 按一下视图工具列中的「删除」按钮 。 ¨ 从书签的快速菜单中,选取「删除」。 ¨ 按一下键盘上的 Delete 键。 请注意,书签已从「Bookmarks」视图中移除。
图2.28 II. 这时应该还有一个书签。这个书签与Hello.java档其中一行相关。另外还有两种方法可以移除这个书签。 ¨ 使用Hello.java编辑器标记列中的Remove Bookmark。请记住,最初建立书签时,在标记列中使用Add Bookmark。
图2.29 ¨ 在「Bookmarks」视图中,利用书签蹦现菜单中的删除来删除书签(如上面所执行的动作)。 以下是第二个方式。 III. 确定有编辑器开启了Hello.java。 虽然编辑器实际上不需要开启,但删除书签时,可以检视编辑器更新。 IV. 在「Bookmarks」视图中,选取Hello.java(剩下的书签)。 按一下视图工具列中的「删除」按钮 。请注意,书签已从「Bookmarks」视图及Hello.java编辑器中移除。
2.12快速视图(Fast View)快速视图是隐藏而可以快速显示的视图。它们的运作方式和一般视图相同,唯一不同之处是它们在隐藏时不会占据工作台窗口的画面空间。 这一节要说明如何将「Navigator」视图转换成快速视图。
2.12.1建立快速视图快速视图是隐藏而可以快速显示的视图。这些指示开始于从「Navigator」视图建立快速视图,之后,再说明完成快速视图之后要如何使用它。 以下是两个建立快速视图的方法 n 使用拖放技术。 n 使用视图「系统」菜单所提供的菜单作业。 请依照下列方式,利用拖放技术来建立快速视图。 I. 在「Navigator」视图中,按一下标题列,将它拖曳到窗口左下方的快捷方式列中。 II. 当游标到了快捷方式列,它会变成一个"快速视图"游标。请放开鼠标按钮,将导览器放在快捷方式列中。 现在,快捷方式列中会有导览器快速视图的按钮
如果要利用第二种方法来建立快速视图,首先在「Navigator」视图的卷标上蹦现快速菜单。请从这个菜单中,选取Fast View。
图2.30
2.12.2使用快速视图现在,导览器已转换成快速视图。这一节要示范它现在能做什么。 请确认窗口左下方的快捷方式列仍有「Navigator」视图,且外观如下:
I. 在快捷方式列中,按一下「Navigator」快速视图按钮。 II. 观察「Navigator」视图从窗口左侧出现。
图2.31 III. 可以依照正常方式来使用「Navigator」快速视图。如果要调整快速视图的大小,请将鼠标移到快速视图右缘,光标在该处会变成双箭头。之后,请按住鼠标左键来移动鼠标。 IV. 如果要隐藏快速视图,请按一下另一个视图或编辑器,或在快速视图的工具列中按一下最小化按钮。
附注: 如果从「Navigator」快速视图开启档案,快速视图会自动隐藏起来,让能够使用档案。 如果要将快速视图转换回正规视图,请执行下列动作之一: n 从视图左上角图标的快速菜单中,选择快速检视。 n 从工具列拖曳快速检视图示,然后将它放置在工作台窗口某处。
2.13比较工作台可用来比较多项资源以及在特殊的比较编辑器中呈现结果。 开始比较之前,必须建立一些档案。 I. 利用项目的蹦现菜单来建立一个叫做 file1.txt 的档案。 在 file1.txt 的编辑器中,输入下面这几行文字,再将档案储存起来: This is line 1. II. 在导览器中,选取 file1.txt,再利用 Ctrl+C 来复制档案。 III. 使用 Ctrl+V(贴上)来建立副本。在出现的名称冲突对话框中, 将档案重新命名为 file2.txt。 (在 Mac 中,请使用 Command+C 和 Command+V。) 现在,有两个相同的档案 file1.txt 和 file2.txt。
2.13.1简单比较在导览器中,选取 file1.txt 和 file2.txt,然后从快速菜单中,选取「Compare With」→「Each Other」。 这时会出现一个对话框,指出两个档案相同。
图2.32 依照下列方式来编辑 file1.txt: I. 删除第 1 行:"This is line 1." II. 将第 3 行改成 "This is a much better line 3." III. 插入第 4a 行(在第 5 行之前),内容为:"This is line 4a and it is new" 现在,档案 (file1.txt) 的内容应该如下: This is line 2. 储存档案的内容,方法是选取「File」→「Save」(或按 Ctrl+S)。 如果要比较档案,请再次选取 file1.txt 和 file2.txt,从「导览器」的快速菜单中,选取「Compare With」→「Each Other」。 这时会开启一个特殊比较编辑器。下一节将说明如何使用这个比较编辑器。
图2.33
2.13.2了解比较请比较在下列比较编辑器中产生的 file1.txt 和 file2.txt。左侧显示 file1.txt 的内容,右侧显示 file2.txt 的内容。连接左侧和右侧的线表示档案之间的差异。 如果需要更多空间来查看比较,可以按两下编辑器标签,将编辑器最大化。
3 2 1 图2.34 不同编辑器左侧的编号变更如下: I. 从最上面一行开始(左窗格),差异列(在蓝圈区)指出左侧档案的最顶端遗漏了什么。请遵循右侧档案的差异群(请参阅 #1)。它含有 "This is line 1"。 II. 下一行 "This is line 2." 是白色,指出它符合右侧档案。 III. 移至下一行(背景颜色是彩色),可以看到左侧档案和右侧档案这一行的内容不同(请参阅 #2)。 IV. 下一行(第4行)又是白色,因此,可以跳过它。 V. 下一行是在左侧档案中,但由于它使用背景颜色,可以沿着它的右侧差异列(请参阅#3),注意到右侧档案并没有包含这一行(请参阅红色圆圈)。 开始时,比较编辑器会有点令人气馁,但当沿着左侧向下作业,将焦点放在有灰色标示的项目以及左侧中所没有的项目时,就不会像原先那么不好处理。
2.13.3使用比较请比较在下列比较编辑器中产生的 file1.txt 和 file2.txt。这一节要示范如何使用比较编辑器来解析两个档案之间的差异。
图2.35 比较编辑器的本端工具列有两个部分。请利用右侧的本端工具列按钮群组来移至下一个或上一个变更。
I. 按一下「选取下一个变更」按钮 。请观察它如何选取下一个差异。 II. 再按一次「选取下一个变更」按钮,移至下个变更。 III. 按一下「选取上一个变更」按钮。 如果要将左侧档案的变更合并到右侧档案中,请使用左侧的本端工具列按钮群组,反之亦然。可以执行四类型的合并: n 由左向右复制整份文件。 n 由右向左复制整份文件。 n 由左向右复制现行变更。 n 由右向左复制现行变更。 通常,当左或右侧的整个档案可由其它档案的内容来取代时,都会使用复制整份文件的动作。 「复制现行变更」按钮可以合并单一变更。 I. 确定已选取第二个差异(如下所示):
图2.36 II. 按一下从右向左复制现行变更 。观察右侧档案中的所选文字,现在已复制到左侧档案中。
图2.37 III. 关闭比较编辑器,然后选择OK来储存变更。另外,也可以选择「File」→「Save」 (Ctrl+S) 来储存变更。
2.14历史纪录每次在工作台中储存可编辑的档案时,工作台都会更新这个档案的历史纪录,且会将变更记载下来。之后,只要所需状态不是太久以前,仍在储存历程中,就可以存取档案的历史纪录且可以回复到先前所储存的档案复本。 I. 建立名称为 sampleFile.txt 的新档案。 II. 在 sampleFile.txt 的编辑器中修改资源,先新增 "change1" 这一行,再将档案储存起来。 III. 输入新的一行 "change2",再重新储存它,以重复这个动作。 IV. 新增第三行 "change3",再重新储存它。 V. 从「Navigator」视图中的资源的快速菜单中,选取「Replace With」→「Local History...」。 VI. 这时会开启「从历史纪录取代」对话框,且会显示档案先前的历史纪录。
图2.38 对话框左窗格含有档案的工作台副本。上图显示工作台包含的复本有完整的三行,也就是工作台编辑区目前所显示的相同复本。 历史纪录中的第一个项目(请参阅上面)含有最后储存的档案副本。这是只有两行文字的副本。树状结构中最终项目是档案的第一个副本。 对话框底端区域会显示工作台档案和历史纪录中所选取的特定档案复本的差异。 VII. 选取历史纪录中的第一个项目(如上所示)。右窗格应该会显示一行的文字。 VIII. 按一下取代。这会以所选历史纪录项目来取代 sampleFile.txt 的工作台副本。 IX. 观察 sampleFile.txt 编辑器,现在它有两行。
2.15回应 UI依预设,所有 Eclipse 作业都是在使用者接口执行绪中执行的。当使用接受序列化程序代码执行绪作业的响应 UI 时,仍可以在 Eclipse 的其它位置中作业。如果没有响应 UI 支持,当遇到速度慢的作业时,会被锁定,因而无法执行任何其它动作。 虽然部分作业会自动在背景中执行(如自动建置),但在许多情况下,都会显示一个对话框来提供在背景中执行作业的选项。比方说,手动建置项目有时要多花一些时间,在这期间,仍可以在 Eclipse 中继续使用其它功能。
图2.39 当建置项目时,请从「Project」对话框中选取Run in Background,响应 UI 可以在 Eclipse 中执行其它作业。
图2.40 如果需要动作状态及目前在执行的其它作业的相关信息,请按一下Details。
Detail画面会显示即将执行的作业以及可能同时在执行中的任何其它作业的状态信息。
图2.41 当某项作业被其它作业锁定时,「Progress Information」对话框也会加以指示。
图2.42 如果要将在背景中执行的作业设为默认值,请选取「Window」→「Preferences」→「Workbench」,再勾选Always run in background。
图2.43
3.喜好设定(Preferences)「Preferences」对话框是用来设定使用者喜好设定的对话框。可以从「Window」→「Preferences」找到这个对话框。由外挂程序组成的喜好设定页面也可以在这个对话框中找到。 喜好设定大部分的功能都是由其个别页面所定义,但对话框提供了两个一般功能: n Import:汇出会将对预设喜好设定的任何变更写入到使用者指定的档案中。 n Export:汇入会套用使用者指定的档案中的喜好设定。 喜好设定对话框的外观如下:
图3.1
3.1工作台(Workbench)工作台一词指的是桌面开发环境。 每一个工作台窗口都含有一个或多个视景。视景则包含视图和编辑器,以及控制在某些菜单和工具列上出现的项目。在任何给定的时间里,可有多个工作台窗口存在于桌面上。 可以在工作台页面中变更下列喜好设定。
工作台喜好设定页面看起来如下:
图3.2
3.1.1外观(Appearance)可以在「外观」页面中变更下列喜好设定。
「外观」喜好设定页面看起来如下:
图3.3
3.1.2功能(Capabilities)「功能」喜好设定页面可以启用或停用各种产品组件,如 Java 开发和外挂程序开发。 附注:部分功能选项会相依于其它功能,停用某必要功能,却仍启用相依的功能,结果只会重新启用它们。当取消选取 Java 开发和核心团队支持时,就是如此。 「功能」喜好设定页面看起来如下:
图3.4 当试图启用某个动作,但它的功能先前已停用或尚待喜好设定页面予以启用时,会出现下列Confirm Enablement提示,供确认确实要启用必要的功能。请按一下Details来显示功能的说明。
图3.5
3.1.3颜色和字型(Colors and Fonts)可以利用「颜色和字型」喜好设定页面来设定Eclipse组件所用的许多字型和颜色。 树状结构用来导览各种颜色和字型,以及显示各种颜色和字型的预览。任何字型的现行样式(不是大小)预览都会出现在它的标签中。颜色的预览则会出现在卷标的相关图标中。另外,部分种类(尤其是工作台)会提供更详细的构成要素预览。这个预览如果可用的话,会显示在说明之下。 可以从清单中选取字型区,再按一下Use System Font来选取操作系统字型设定,或按一下Change来开启选取字型的对话框,以变更字型设定。Reset可用来返回默认值。 当选取了某个字型时,可以按一下树状结构区右侧的颜色按钮来变更颜色设定。Reset可用来返回默认值。 「颜色和字型」喜好设定页面看起来如下:
图3.6 「颜色和字型」文字字段可用来过滤内容。只需要输入一个项目,任何相符的结果都会保留在树状视图中。 当选取工作台颜色和字型设定时,会提供说明和预览。
图3.7
3.1.4比较/修正(Compare/Patch)可以在「比较/修正」页面中变更下列喜好设定。 一般选项(General)
文字比较选项
「比较」喜好设定页面看起来如下:
图3.8
3.1.5编辑器(Editors)可以在「编辑器」页面中变更下列喜好设定。
「编辑器」喜好设定页面看起来如下:
图3.9
3.1.6档案关联(File Associations)在「档案关联」喜好设定页面上,可以新增或移除工作台可辨识的档案类型。也可以建立编辑器与档案类型清单中的档案类型的关联性。 档案类型清单(File Associations) n 新增:将新的档案或档案类型(扩展名)新增至预先定义的清单。在产生的「新档案类型」对话框中,输入档案的名称或扩展名。如果要新增扩展名,则必须在档案类型前面输入一点或 "*."(例如,".xml" 或 "*.xml",而非只是 "xml")。 n 移除:从清单中移除所选取的档案类型 建立新档案类型的对话框:
图3.10
相关编辑器清单(Associated Editors) n 新增:将新编辑器新增至与上述选取之档案类型相关联的编辑器清单。在产生的「编辑器选择」对话框中,可以选择编辑器,以在工作台内(内部)或工作台外(外部)启动;如果所要的编辑器未显在清单中,请按一下Browse来自行寻找编辑器。 n 移除:移除编辑器与上述选取之档案类型之间的关联。 n 默认值:将所选取的编辑器设为上述选取之档案类型的预设编辑器。该编辑器会移至「相关联的编辑器」清单的顶端,以表示它是该档案类型的预设编辑器。 建立新档案关联的对话框:
图3.11
「档案关联」喜好设定页面看起来如下:
图3.12
3.1.7按键(Keys)在Eclipse中,可以广泛自订键盘的功能。Eclipse中指定了许多按键作用和按键顺序来呼叫特定的指令。 按键作用(Key Strokes)、按键顺序(Key Sequences)和按键连结(Key Bindings) 「按键作用」是指按下键盘上的某个按键,同时选择性按住一或多个下列修正键: 「按键顺序」是指一或多个按键作用。传统上,emacs 会指定两个或三个按键作用的按键顺序给特定的指令。例如,在 emacs 中,指派给 「按键连结」是将按键顺序指派给指令。 配置(Configurations) 「配置」是指一组按键连结。Eclipse 包含两种配置: n 默认值 n Emacs(延伸预设) 预设配置包含一组通用的按键连结,在许多情况下,使用者可以将它们视为传统的按键顺序。例如, Emacs 配置包含一组 Emacs 使用者非常熟悉的按键连结。例如, 必须了解为什么 Emacs 配置说它「延伸预设」,这一点很重要。与预设配置不同,Emacs 配置并不是一组完整的按键连结。相反的,它会尽可能借用预设配置,而且只会针对与预设配置不同的地方来定义明确的 Emacs 样式按键连结。通常,诸如 使用者可以变更按键喜好设定页面中的「作用中的配置」设定,来决定最喜欢使用的配置。如果使用者选择预设配置,便会忽略所有 Emacs 按键连结。如果使用者选择 Emacs 配置,则明确指派的 Emacs 样式按键顺序会优先于预设配置中任何冲突的指派。 环境定义(Contexts) 按键连结可能会因为 Eclipse 的现行环境定义而有所不同。 有时候,例如,作用中的组件可能会是 Java 档案编辑器,这时指派不同组的按键顺序可能会比作用中的组件是 HTML 档案编辑器更合适。 Eclipse 包含七种不同的环境定义。它们是: n 在对话框和窗口中 n 在窗口中(延伸「在对话框和窗口中」) n 在对话框中(延伸「在对话框和窗口中」) n 编辑文字(延伸「在窗口中」) n 编辑 Java 程序代码(延伸「编辑文字」) n 除错(延伸「在窗口中」) n Java 除错(延伸「除错」) 环境定义与配置类似,它们可以延伸其它的环境定义。比方说,编辑 Java 程序代码环境定义会借用编辑文字环境定义的按键连结,后者又会从在窗口中环境定义借用按键连结。 附注:不建议将按键连结提升到它所延伸的环境定义。比方说,最好不要将编辑文字按键连结移到在对话框和窗口中环境定义。这可能会有非预期的结果。 可以让某些按键连结在对话框中运作。这些按键连结会指派给在对话框和窗口中环境定义。「剪下」的按键连结就是这类按键连结的一个范例。可以变更这些按键连结。比方说,可以用 Ctrl+X 当成对话框的「剪下」功能,而以 Ctrl+W 作为窗口中的「剪下」功能。 平台和语言环境(Platform and Locale) 在不同的平台和语言环境下,按键连结也会不同。在 Macintosh 平台上, 当 Eclipse 启动时,会决定现行的平台和语言环境,而且在 Eclipse 实例过程中并不会改变。 自订按键连结(Customizing Key Bindings) 在自订按键连结时,如果有多键的按键顺序、配置和环境定义,则会有许多事项须记住。为了简化,所有的按键自订都是在「按键」喜好设定页面中完成。 选取「Window」→「Preferences」→「Workbench」→「Keys」来进入「按键」喜好设定页面。
图3.13 在这个范例中,我们已经选择 Emacs 作为作用中的配置,而且已经从指令清单中选择 请注意, 以下是指派给 输入按键顺序 现在可以看到
图3.14 选取
图3.15 假设在 Emacs 配置中已经选择指定另一个按键给
图3.16 按键连结的动态本质(The Dynamic Nature of Key Bindings) 按键连结是由外挂程序提供,而在 Eclipse 中,可以新增或移除外挂程序。这样就能新增或移除由这些外挂程序所宣告的按键连结。Eclipse 在储存自订按键连结时,可以自动补偿这个问题。比方说,在上面的范例中,在 Emacs 配置中, 冲突解决(Conflict Resolution) 只有少数简单、常用的按键作用可以指派给多个指令。许多配置、环境定义、平台和语言环境的所有分割键顺序在指派到网域中时,并没有彼此冲突。如果环境定义不存在,请考虑上述 虽然可藉由上述的机制来大量减少冲突,但冲突仍然可能发生。两个相对独立的外挂程序可以将相同按键顺序指派给含相同环境定义、配置、平台和语言环境的不同指令。请考虑如果外挂程序于在窗口中环境定义中指派了 这就是冲突。同时呼叫两个指令是不正确的,也不能只选择其中一个指令来接收按键作用。唯一能做的,就是忽略这两个按键连结,使 「按键」喜好设定页面显示这个本质的冲突。请注意红色的文字和 "[冲突]" 一字: 如果要解决这类冲突,使用者可以将按键顺序明确指派给其中一个指令。 另一类的冲突可能是因为按键顺序有多重按键作用。例如,在 Emacs 配置中,有许多多重按键作用的按键顺序是以 如同之前的说明,Emacs 配置会从标准配置借用按键连结。在标准配置中, 对于这类冲突,其规则是忽略已指派给
3.1.8标签装饰(Label Decorations)「卷标装饰」可让其余信息显示在项目的卷标和图标中。 「标签装饰」喜好设定页面提供每一个装饰的说明,并可以选择要让哪些装饰看得到。 「标签装饰」喜好设定页面看起来如下:
图3.17
3.1.9链接资源(Linked Resources)在使用链接资源时,会使用这个喜好设定页面。Enable linked Resources喜好设定是用来整体启用或停用整个工作区的链接资源特性。依预设,链接资源是启用的。如果停用链接资源,就无法建立任何新的链接资源或汇入含有链接资源的现有项目。 并非所有的工作台版本都支持链接资源并且可将它们识别为链接信息。如果打算与其它使用者共享工作区数据,可能不要使用链接资源。如果其它使用者无法使用链接资源,请停用这个喜好设定。 这个页面的其它部分是用来定义在建立链接资源时所使用的路径变量。请使用New按钮来定义新的变量,也可以使用Edit按钮来变更现有变量的值,或者使用Remove按钮来移除现有的变量。请注意,如果变更的路径变量正在使用中,就需要对这些项目执行本端重新整理,以 "探索" 档案系统中是否有任何不同之处。可以开启该项资源的「导览器」快速菜单,然后选取Refresh,来重新整理资源。建议不要移除目前正在使用的路径变量。 「链接资源」喜好设定页面的外观如下:
图3.18
3.1.10历史纪录(Local History)可以在「历史纪录」页面中变更下列喜好设定。
「历史纪录」喜好设定页面看起来如下:
图3.19
3.1.11视景在「视景」喜好设定页面上,可以管理各种定义于工作台的视景。
可用的视景选项:
「视景」喜好设定页面看起来如下:
图3.20
3.1.12搜寻(Search)「搜寻」喜好设定页面可让使用者设定搜寻的喜好设定。Reuse editors to show matches(重复使用编辑器来显示相符项目)选项可让使用者继续使用同一个编辑器来搜寻结果,以减少开启的编辑器数目。Emphasize inexact matches(强调不完全相符)的项目是一个选项,可以在「搜寻」视图中强调显示这些项目。如果搜寻引擎不完全确定相符项目,则该相符项目会被视为不精确。也可以设定Foreground color for inexact matches (不完全相符项目的前景颜色)。如果只要察看完全相符的项目,请勾选Ignore inexact matches (忽略不完全相符的项目)。Default perspective for the Search view(视图的预设视景)可以定义有新搜寻结果时要将哪一个视景移至最前面。 「搜寻」喜好设定页面看起来如下:
图3.21
3.1.13启动和关闭(Startup and Shutdown)「启动和关闭」喜好设定页面可以选择要在工作台启动期间自动启动的外挂程序。 一般而言,要到需要外挂程序时才会加以启动。不过,某些外挂程序可能会指定它们希望在启动期间被启动。这个喜好设定页面可以选择在启动期间将会实际启动这其中的哪些外挂程序。
「启动和关闭」喜好设定页面看起来如下:
图3.22
3.2 Ant可以在 Ant 页面中变更下列喜好设定。 可以配置 Ant 的 "-find" 模拟要搜寻的建置档。 也可以配置 Ant 建置输出的颜色。
图3.23
3.2.1 Ant 编辑器(Ant Editor)可以在「Ant 编辑器」页面中变更下列喜好设定。 外观选项(Appearance Options)
在外观页面中,提供 Ant 编辑器的外观选项。
图3.24
3.2.2 Ant 执行时期(Ant Runtime)在类别路径页面上,可以将定义作业和类型的其它类别新增至 Ant 类别路径。
图3.25 在作业页面上,可以新增定义于类别路径上的其中一个类别的作业。
图3.26 在类型页面上,可以新增定义于类别路径上的其中一个类别的类型。
图3.27 在内容页面中,可以新增要传送到 Ant 的内容和内容档。
图3.28
3.3建置次序(Build Order)通常,项目建置的次序是很重要的。比方说,如果某个项目需要在另一个项目中定义的 Java 类别,则必须先建置第一个项目的必备类别,然后再建置第一个项目。工作台可以让使用者明确地定义建置项目的次序。此外,使用者可以让平台藉由将项目参照解译为必备关系,来计算建置次序。在建置整个工作区或项目群组上,都会套用建置次序。 可以在「建置次序」喜好设定页面中变更这个次序。一开始,使用预设建置器次序选项是开启的,在此情况下,平台会计算建置次序。关闭这个选项时,就可以存取项目清单,而且可以操作项目的次序。请选取项目并使用上和下按钮来变更建置次序。可以使用Add Projec及Remove Project按钮,在建置次序中新增和移除专案。从建置次序中移除的项目将会被建置,但是会在建置次序中的所有项目都已建置完成之后才会建置。 在这个页面底端,有一个喜好设定可用来处理包含循环的建置次序。在理想的状况下,应该避免在项目之间使用循环参照。包含循环的项目在逻辑上仍属于单一项目,所以它们会尽可能收合成为一个项目。然而,如果一定要有循环,建置次序可能需要好几个迭代,才能正确地建置每一个项目。变更这个喜好设定时,会改变工作台尝试在建置次序上进行迭代多少次之后,才会放弃。 「建置次序」喜好设定页面看起来如下:
图3.29
3.4说明(Help)在「说明」喜好设定页面上,可以指出如何显示说明书籍。
「说明」喜好设定页面看起来如下:
图3.30 附注:在这个页面中所执行的选项会影响说明视图的呈现方式。如果选取的浏览器没有和 Internet Explorer 或 Mozilla 完全兼容,或者已经停用 JavaScript,则浏览器中所显示的说明视图可能是简化的版本。
3.4.1说明服务器(Help Server)说明系统包含一个内部服务器,可提供说明内容给浏览器。可以使用这个喜好设定页面来变更服务器所使用的接口和端口。只有当遇到问题且无法使用预设的喜好设定来检视说明时,才应该变更这些设定。
「说明服务器」喜好设定页面的外观如下:
图3.31
3.5自动更新(Install/Update)可以在「自动更新」页面中变更下列喜好设定:
3.6 Java这个页面可以指出在一般 Java 设定方面的喜好设定。
3.6.1外观(Appearance)在这个喜好设定页面上,可以配置视图中之 Java 元素的外观。选项如下:
3.6.2类别路径变量(Classpath variables)可配置的变量(Configurable variables) 可在「Java 建置路径」中使用类别路径变量,以免参照本端档案系统。当使用变量项目时,类别路径中只含有一个变量,且建置路径可供整个团队共享。必须在这个页面中配置变量的值。
保留类别路径变量(Reserved class path variables) 某些类别路径变量会设定在内部,且无法在「类别路径变量」喜好设定中变更: n JRE_LIB:这个保存档中含有目前所用之 JRE 的执行时期 JAR 檔。 n JRE_SRC:为目前所用 JRE 的程序文件保存文件。 n JRE_SRCROOT:为目前所用 JRE 之程序文件保存文件中的根路径。
3.6.3程序代码格式制作器(Code Formatter)这个页面中的预览窗格会示范这些选项对编辑器中之 Java 程序代码所产生的结果。
3.6.4程序代码产生(Code generation)程序代码产生喜好设定分成两个区段: n 名称 n 程序代码和批注 名称(Names) 这个页面定义字段(Static 和非 Static)、参数和区域变量的命名惯例。对于每一个变量类型,有可能配置前缀或字尾清单,或两者的清单。 产生 Getter 和 Setter 动作,以及所有建立字段、参数和区域变量的动作和「快速修正」提议,都会使用命名惯例。
程序代码和批注(Code and Comments) 程序代码和批注页面含有产生程序代码之动作所使用的程序代码模板。模板含有当套用模板时将替代的变量。某些变量可用在所有模板中,某些变量则是模板特有的。
批注范本(Comment templates) 批注模板可包含 ${tags} 变量,这个变量将被已加注元素的标准 Javadoc 标示 (@param, @return..) 所替代。此外,「置换方法」批注可包含 ${see_to_overridden} 范本 n 建构子批注:指定新建构子批注的范本 n 类型批注:指定新类型批注的模板。请注意,可在「新建 Java 文件」范本中参照这个范本 n 方法批注:指定新方法(不置换基础类别中的方法)批注的范本 n 置换方法批注:指定新方法(置换基础类别中的方法)批注的范本。依预设,批注会定义成非 Javadoc 批注(Javadoc 将把这个批注换成已置换方法的批注)。如果想要的话,可以将这个批注变更为真实的 Javadoc 批注 新建 Java 文件范本(New Java files template) 当建立新档案时,「类别」和「接口」精灵就会使用「新建 Java 文件」模板。模板可以指定要新增批注之处。请注意,模板可以含有 ${typecomment} 变量,这个变量将被类型批注模板的评估值所替代。 Catch 区块主体范本(Catch block body template) 当建立 catch 区块主体时,就会使用「Catch 区块主体」模板。它可以使用 ${exception_type} 和 ${exception_var} 变数。 方法主体范本(Method body template) 当建立含有主体的新方法时,就会使用「方法主体」模板。它含有解析为 return 陈述式或/和 super 呼叫的 ${body_statement} 变量。 建构子主体范本(Constructor body templates) 当建立含有主体的新方法或建构子时,就会使用「建构子主体」模板。它含有解析 super 呼叫的 ${body_statement} 变量。 「程序代码范本」对话框(Code Template dialog) 对话框中的字段与按钮如下:
3.6.5编译器(Compiler)下列各段将分别说明编译器的喜好设定: n 问题 n 样式 n 相容和类别档 n 建置路径 问题(Problems)
样式(Style)
相容和类别档(Compliance and Class files)
建置路径(Build Path)
3.6.6 Java 编辑器(Java editor)这个页面可以设定如下的 Java 编辑器喜好设定: n 外观 n 语法 n 程序代码协助 n 问题指示 外观(Appearance) 外观指定 Java 编辑器的外观。
语法(Syntax) 语法指定如何展现 Java 程序代码。
程序代码辅助(Code assist) 程序代码辅助指定程序代码辅助的行为与外观。
附注(Annotations) 附注指定何时及如何显示附注。
范本(Templates) 「模板」喜好设定页面可以建立新模板与编辑现有模板。模板可方便程序设计师快速插入常重复出现的程序代码型样。 下列按钮可以操作与配置模板:
「范本」对话框(Template dialog) 新建模板与编辑现有模板所用的对话框相同,以下是其说明。 对话框中的字段与按钮如下:
模板变量(Template variables) Java 和 Javadoc 环境定义皆会定义下列变量:
此外,Java 环境定义会定义下列变量:
3.6.7 JRE 安装(JRE installations)「类别路径变量」喜好设定
3.6.8 JUnit
3.6.9新专案(New project)
3.6.10组织汇入(Organize imports)下列的喜好设定是定义「组织汇入」指令要如何在编译单元中产生 import 陈述式。 「组织汇入」喜好设定
3.6.11「重构」喜好设定(Refactoring preferences)可在「重构」喜好设定页面中设定下列的喜好设定。(「Window」→「Preferences」→「Java」→「Refactoring」。)
3.6.12作业标示(Task Tags)在这个喜好设定页面上,可以配置作业标示。当标示清单不是空的时候,每当编译器在 Java 程序代码中的任何批注内遇到其中一个对应标示时,编译器将发出作业标记。所产生的作业讯息将包括标示,以及直到下一个字行分隔字符或批注结尾的范围。
有一个名为TODO、优先级为Normal的预设作业标示。
3.7团队(Team)团队喜好设定页面包含会影响版本管理团队支持的选项。
3.7.1 CVS在 CVS 喜好设定页面中,可以自订 CVS 外挂程序的若干项目。 一般 CVS 喜好设定(General CVS Preferences):
主控台喜好设定(Console preferences):
「Ext 联机方法」喜好设定(Ext Connection Method preferences):
「标签装饰」喜好设定(Label Decorations preferences):
密码管理(Password Management): 这个喜好设定页面可以查看哪些储存库位置的密码快取在金钥环档案中,且可以除去这些密码。 SSH2 联机方法(SSH2 Connection Method):
监视/编辑喜好设定(Watch/Edit preferences):
3.7.2忽略的资源(Ignored Resources)在「Team」→「Ignored Resources」喜好设定页面中,可以指定要排除在版本控制管理系统之外的文件名称型样。它有一份档案型样清单,资源必须符合这些档案型样,才能成为版本控制候选项。这些型样可含有万用字符 "*" 和 "?"。型样 "*" 代表任何零或多个字符的序列。型样 "?" 代表任何一个字符。例如,可以指定型样 "*~",其将会比对任何以 "~" 结尾的暂存档。在更新或确认作业期间,将会忽略任何符合任一型样的档案或目录。 如果要将档案类型新增至忽略清单,只需要按一下Add按钮。在对话框中,请输入档案类型(例如 *.class)。如果要从忽略清单中移除档案类型,只需要选取忽略清单中的档案类型,按一下Remove按钮。 可以从清单中取消选取某个档案型样,暂时停用这个档案型样的忽略功能。不必从清单中移除指定的档案型样,就可以暂时停用它。
3.7.3档案内容(File Content)在「Team」→「File」喜好设定页面中,可以将扩展名关联到档案所包含的数据类型。档案内容类型的两个选项是 ASCII 和二进制。然后,像 CVS 这类的储存库提供者就可以使用这项信息来为内容类型提供适当的行为。例如,在 ASCII 档案中,CVS 可确保行终止器符合 OS 平台的行终止器。 将项目新增至「档案内容」页面的方法有两种。第一个方法是透过工作台外挂程序的帮助。整合到工作台的工具可以为工作台提供工具专用的扩展名的档案内容类型。工作台本身也会定义在工作台中经常使用和出现的扩展名的档案内容类型(例如,html、gif 等等)。 第二个方法是让使用者在「档案内容」喜好设定页面中明确地新增档案内容类型。如果要这么做,使用者只需要按一下Add按钮,然后输入扩展名。之后,他们可以切换类型与扩展名之间的关联,方法是在表格中选取扩展名的项目,然后按一下Change。使用者可以选取项目,然后按一下Remove,将项目从清单中移除。
4. Java程序开发在Eclipse中做任何事之前,都必须新增一个项目。Eclipse可透过外挂支持数种项目(如EJB或C/C++),预设支持下列三种项目: u Java Project – Java开发环境 u Plug-in Project – 自行开发plug-in的环境 u Sample Project – 提供操作文件的ㄧ般环境 如图4.1
图4.1
4.1建立Java项目新增Java项目的步骤: I. 选择「File」→「New」→「Project」 (或是在『Package Explorer』窗口上按鼠标右键,选择「New」→「Project」选单选项) (或是按工具列上New Java Project的按钮 ) II. 在New Project对话框(图4.1),选Java Project (或是展开Java的数据夹,选Java Project,如图4.2)
图4.2 III. 在New Java Project的窗口中输入Project的名称,如图4.3
V IV III 图4.3 IV. 在Project Layout中可以选择编译好的档案是否要和原始档放在同一个目录下,如图4.3 V. 按下Finish
4.2建立Java类别新增Java类别的步骤: I. 选择「File」→「New」→「Class」 (或是在『Package Explorer』窗口上按鼠标右键,选择「New」→「Class」选单选项) (或是按工具列上New Java Class的按钮 ) II. 在New Java Class窗口中,Source Folder字段默认值是项目的数据夹,不需要更改。 III. Package字段输入程序套件的名称 IV. Name字段输入Class Name V. 在Which method would you like te creat的部份,有勾选public static void main(String[] args)的话,会generate main method VI. 按Finish,会依套件新增适当的目录结构及Java原始文件
VI V IV III II 图4.4
l 在Package Explorer的视图中可以看到程序的结构 l 在Navigator的视图中可以看到套件的目录架构
4.3程序代码完成功能4.3.1 Code Completion在Eclipse中打左括号时会立刻加上又括号;打双引号(单引号)时也会立刻加上双引号(单引号)。 4.3.2 Code Assist在输入程序代码时,例如要打System.out.println时,打完类别名称后暂停一会儿,Eclipse会显示一串建议清单,列出此类别可用的方法和属性,并附上其Javadoc批注。可以直接卷动选出然后按Enter。
图4.5 也可以只打类别开头的字母,然后按Alt - /,一样会显示一串建议清单。
图4.6 Alt - /这个组合键不仅可以可以显示类别的清单,还可以一并显示已建立的模板程序代码,例如要显示数组的信息,只要先打for,在按Alt - /这个组合键,就会显示模板的请单。
图4.7
4.4执行Java程序大多数的程序不需特定的启动组态(Launch Configuration),首先确定要执行的程序代码在编辑器中有选到(页签变蓝色),再执行下列步骤: I. 选单选「Run」→「Run as」→「Java Application」 II. 若有修改过程序,Eclipse会询问在执行前是否要存档 III. Tasks试图会多出Consol页签并显示程序输出
程序若要传参数、或是要使用其它的Java Runtim...等等,则需要设定程序启动的相关选项,执行程序前,新增一个启动组态或选用现有的启动组态。 I. 选单选「Run」→「Run」,开启Run的设定窗口 n Main 标签用以定义所要启动的类别。请在项目字段中,输入内含所要启动之类别的项目名称,并在主要类别字段中输入主要类别的完整名称。如果想要程序每当在除错模式中启动时,在 main 方法中停止,请勾选Stop in main勾选框。 n 附注:不必指定一个项目,但这样做可以选择预设类别路径、来源查阅路径,以及 JRE。 n 自变量(Arguments)标签用以定义要传递给应用程序与虚拟机器(如果有的话)的自变量。也可以指定已启动应用程序要使用的工作目录。 n JRE 卷标用以定义执行或除错应用程序时所用的 JRE。可以从已定义的 JRE 选取 JRE,或定义新的 JRE。 n 类别路径(Classpath)卷标用以定义在执行或除错应用程序时所用类别文件的位置。依预设,使用者和 bootstrap 类别位置是从相关联项目的建置路径衍生而来。可以在这里置换这些设定。 n 程序文件(Source)卷标用以定义当除错 Java 应用程序时,用来显示程序文件之程序文件的位置。依预设,这些设定是从相关联项目的建置路径衍生而来。可以在这里置换这些设定。 n 环境(Environment)标签会定义在执行 Java 应用程序或者对它进行除错时,所要使用的环境变量值。依预设,这个环境是继承自 Eclipse 执行时期。可以置换或附加至继承的环境。 n 共享(Common)卷标定义有关启动配置的一般信息。可以选择将启动配置储存在特定档案,以及指定当启动配置启动时,哪些视景将变成作用中。
图4.8 II. 在Arguments的页签中输入要传入的值,若是多值的话,用空格键隔开
图4.9
图4.10
4.5 Java实时运算簿页面(Java Scrapbook Page)写程序时可能会些其它的想法,但不知是否可行:多数情况是直接写到程序再来debug,或是另外写各小程序。Eclipse提供一种轻巧的替代方式,Java实时运算簿页面(Java Scrapbook Page),藉由渐进式编译器,可以在实时运算簿写入任意的Java程序代码并执行,不需另写在类别或方法中。 I. 切换至Java视景 II. 「File」→「New」→「Other...」→「Java」→「Scrapbook Page」 (在专案上按右键,「New」→「Other...」→「Java」→「Scrapbook Page」)
图4.11 III. 选择要存放的地方 IV. 输入档名 IV. 按下Finish
III IV V 图4.12 在「Package Explorer」或是「Navigator」视图会显示刚刚建立的JackyTest.jpage档案。
图4.13 可以输入要测试的Java程序代码,例如 for (int i = 0; i < 5; i++) { System.out.println(Integer.toString(i)); } I. 将这段程序代码反白 II. 在这段程序上按右键,选择Execute III. Consol视图会显示执行的结果
图4.14 若需要汇入套件; I. 在编辑器窗口内按右键,选Set Import...
图4.15 II. 在Java Snippet Imports窗口中,按Add Packages的按钮
图4.16 III. 在Add Packages as Imports的窗口中,挑选要import的package
图4.17 IV. 按OK
4.6自订开发环境4.6.1程序代码格式在「Window」→「Preferences」→「Java」→「Code Style」→「Code Formatter」
图4.18 按Show的按钮,出现Show Profile的窗口,里面的各个页签,可以设定Java Code Style
图4.19 设定完成后,可以Export成一个档案;以利下次设定Java Code Style时,可以利用Import的方式,产生一致的程序风格。
4.6.2程序代码产生模板在开发Java时,可以把常用的流程控制建构式或是常用到的API,建立成一个模板,可以加速程序开发。接下来以System.out.println()为例子,来说明如何建立模板: I. 「Window」→「Preferences」→「Java」→「Editor」→「Templates」
图4.20 II. 在Preferences窗口按New的按钮
VI IV VI V III 图4.21 III. 在Name的字段输入自己想要的名称 IV. Context选java V. 在Description的字段输入简短的说明 VI. 在Pattern的字段输入System.out.println("")后;把光标移到两个双引号的中间,再按下面Insert Variable的按钮,选择cursor VII. 再按两次OK 这里的${cursor}变量代表插入模板的程序代码后,光标所在的位置。 使用此新模板,打s(或是sop)再按Alt - /,从清单中选sop,再按Enter即可。
图4.22
4.6.3 Javadoc批注编辑新增类别后出现的文字。移除” To change the template for this generated...”这段前置文字,并自行扩充Javadoc批注。 I. 「Window」→「Preferences」→「Java」→「Code Style」→「Code Templates」 II. 选右边画面的「Code」→「New Java files」,按Edit按钮
图4.23 III. 修改成需要的格式
图4.24 IV. 按OK 除了New Java file的模板外,还需要修改另一个模版-类型批注(Typecomment)。 I. 「Window」→「Preferences」→「Java」→「Code Style」→「Code Templates」 II. 选右边画面的「Comments」→「Types」,按Edit按钮
图4.25 III. 修改成需要的格式
图4.26 IV. 按OK 往后新增的类别档案,就会套用现在批注。
图4.27 Javadoc也可以产生模板,做法跟4.6.2程序代码产生模板类似,差别在于Context改选javadoc。
图4.28 在程序批注的地方,打eic再按Alt - /,就可以出现清单可以选择。
图4.29
4.7产生 getter 与 setterJava 编辑器可以为编译单元内的类型字段,产生存取元(accessors,也就是getter和setter的method)。 I. 「Source」→「Generate Getter and Setter...」 (或是在Java编辑器按右键,「Source」→「Generate Getter and Setter...」)
VI V IV III II 图4.30 II. 挑选哪些需要建立getter和setter的method III. 选择method要建立的地方 IV. 排序的方式 V. 选择Access modifier VI. 选择是否需要建立批注 VII. 按OK
图4.31
4.8建立 JAR 档案4.8.1建立新的 JAR 档案如果要在工作台中建立新 JAR 档,请执行下列动作: I. 在「Package Explorer」中,可以选择性地预选一或多个要汇出的 Java 元素。(在步骤IV中,这些会在JAR Package Specification精灵页面中自动选出。) II. 从快速菜单或从菜单列的File菜单,选取Export。 III. 选取JAR file,然后按一下Next。
图4.32 IV. 在JAR Package Specification页面的Select the resources to export字段中,选取要汇出的资源。 V. 选取适当的勾选框,以指出想Export generated class files and resourcess或Export java source files and resources。附注:这两种情况皆会汇出所选的资源。 VI. 在Select the export destination字段中,输入或按一下Browse以选取 JAR 文件的位置。 VII. 选取或清除Compress the contents of the JAR file勾选框。 VIII. 选取或清除Overwrite existing files without warning勾选框。如果清除这个勾选框,则会提示确认是否要更换每一个将被改写的档案。 IX. 附注:在撰写 JAR 檔、JAR 说明与 Manifest 档时,会套用改写选项。 X. 有两项选择: ¨ 按一下Finish来立即建立 JAR 檔。 ¨ 按一下Next,使用「JAR 套装选项」页面,以设定进阶选项,建立 JAR 说明,或变更预设 manifest。
VIII VII VI V IV 图4.33
4.8.2设定进阶选项I. 遵循建立 JAR 文件的程序进行,但在最后一个步骤中按一下Next,以移至「JAR 套装选项」页面。 II. 如果想储存 JAR 档说明,请选取Save the description of this JAR in the workspace勾选框。 III. 编译器能产生 CLASS 文件,即使程序文件中有错误。可以选择排除内含编译错误的 CLASS 文件(但非程序文件)。如果有启用报告特性的话,则结束时将会报告这些档案。 IV. 可以选择排除内含编译警告的 CLASS 文件(但非程序文件)。在结束时将会报告这些档案。 附注:这个选项不会自动排除内含编译错误的类别档。 V. 可以选择包含来源数据夹路径,方法是选取Create source folder structure勾选框。 VI. 如果希望让汇出作业在建立 JAR 文件前先执行建置,请选取Build projects if not built automatically勾选框。 VII. 按一下Finish,以立即建立 JAR 檔;如果想变更预设 manifest,请按一下Next。
VI V IV III II 图4.34
4.8.3定义 JAR 檔的 manifest可以直接在精灵中定义 JAR 檔 Manifest 的重要部分,或使用已存在于工作台中的 Manifest 檔。 建立新 Manifest I. 遵循建立 JAR 文件的程序进行,但在最后一个步骤中按一下Next,以移至「JAR 套装选项」页面。 II. 设定任何要设定的进阶选项,再按一下Next,移至「JAR manifest 规格」页面中。 III. 如果尚未选取,请按一下Generate the manifest file按钮。 IV. 这时可以选择将 Manifest 储存在工作台中。这会储存 Manifest 以便日后使用。按一下Save the manifest in the workspace,然后按一下Manifest file字段旁的Browse,以指定 Manifest 的路径与文件名。 V. 如果在前一步骤中决定储存 Manifest 档,并在先前的精灵页面中选择储存 JAR 说明,可以选择在 JAR 说明中重复使用 Manifest(做法是选取Reuse and save the manifest in the workspace勾选框)。这表示当从 JAR 说明重建 JAR 档时,将会使用所储存的档案。如果想先修改或更换 Manifest 档,然后再从说明重建 JAR 档,请善用这个选项。 VI. 可以选择密封 JAR,以及选择性地将某些套件排除在密封之外,或指定密封套件清单。依预设,不会进行任何密封。 VII. 按一下Main Class字段旁的Browse按钮来指定应用程序的进入点。 附注:如果的类别不在清单中,表示在一开始时忘了选取它。 VIII. 按一下Finish。这会建立 JAR,并选择性地建立 JAR 说明与 Manifest 檔。
图4.35 使用现有的 manifest 可以使用已存在于工作台中的现有 Manifest 檔。 I. 遵循建立 JAR 文件的程序进行,但在最后一个步骤中按一下Next,以移至「JAR 套装选项」页面。 II. 设定任何要设定的进阶选项,再按一下Next,移至「JAR manifest 规格」页面中。 III. 按一下Use existing manifest from workspace圆钮。 IV. 按一下Browse按钮来从工作台中选取 Manifest 檔。 V. 按一下Finish。这会建立 JAR,并选择性地建立 JAR 说明。
图4.36
4.8.4重新产生 JAR 檔可以使用 JAR 档说明来重新产生先前所建立的 JAR 檔。 从选项的蹦现菜单中,选取Create JAR。这时会重新产生 JAR 檔。
图4.37
4.9.建立 Javadoc 文件选取所要的套件、来源资料夹或项目组(内含一或多个元素),以便为其产生 Javadoc 文件。 执行下列之一,以开启「汇出」精灵: n 选取选择项之蹦现菜单中的汇出;或 n 从菜单列中选取「File」→「Export...」。 在出现的对话框中,从清单中选取 Javadoc,并按下下一步。
4.9.1选取产生 Javadoc 用的类型I. 指定 Javadoc 指令的位置。 II. 在树状结构控制中,选取要的元素,以为其产生 Javadoc。 III. 使用为具有可见性的成员建立 Javadoc 下的圆钮,选取可见性。 IV. 维持选取使用标准 doclet 圆钮。 (或是自定doclet) V. 按下完成,为所选的元素产生 Javadoc,或按下一步,指定其它选项。
V I II III IV 图4.38
4.9.2为标准 doclet 配置 Javadoc 自变量I. 标题名称 II. 请使用基本选项下的勾选框,以指定 Javadoc 选项。 可以使用阐明这些标示群组中的勾选框,以变更所要阐明的标示。 III. 如果想让链接库中之类别的参照,链接至链接库的 Javadoc,请在清单中选取该链接库,并按下配置,以指定链接库之 Javadoc 的位置。 IV. 选择CSS档案 V. 按下完成,以产生 Javadoc;或按下一步,以指定其它的 Javadoc 产生选项。
V IV III II I 图4.39
4.9.3配置 Javadoc 自变量I. 选取在浏览器中开启产生的索引文件勾选框。 II. 可以为 Javadoc 指令指定多个特定选项,方法是在文字区中输入这些选项。 III. 选取将这个 Javadoc 汇出的设定储存成 Ant Script勾选框。 IV. 指定 Ant Script 的位置。 V. 按完成,以产生 Javadoc。 附注:Javadoc 指令产生的输出(包括错误与警告)会显示在「Console」视图中。
IV III II I V 图4.40
4.10工作集(Working Sets)工作集将元素分组,以显示在视图中,或对元素集进行作业。「Navigate」视图使用工作集来限制显示的资源集。如果在导览器中选取了工作集,只会显示资源、资源的子项,以及资源的母项。 可以在「Tasks」视图中使用工作集来限制作业的显示,方法与「Navigate」视图类似。在使用工作台搜寻机能时,可以使用工作集来限制可搜寻的元素集。不同的视图提供不同的指定工作集方法。不过,它们通常使用下列工作集选项对话框来管理现有的工作集以及建立新的工作集。
4.10.1新增工作集I. 在「导览器」视图的工具列上,按一下菜单按钮 ,开启显示选项的下拉菜单。
II. 选Select Working Set后,出现Select Working Set的窗口
III. 选择Java后,按Next
VI. 在New Working Set窗口输入名称和勾选所需的项目,最后按下Finish即可
附注:新建的资源不会自动并入作用中的工作集。如果它们是现有的工作集元素的子项,则会被隐含地并入工作集中。如果要在建立其它资源之后并入它们,必须明确地将它们新增至工作集。
4.10.2隐藏「导览器」视图中的档案I. 在「导览器」视图的工具列上,按一下菜单按钮 ,开启显示选项的下拉菜单。
II. 选Select Working Set后,出现Select Working Set的窗口
III. 从清单中选取一个现有的工作集,来隐藏「导览器」视图中的档案
4.10.3显示「导览器」视图中的档案I. 在「导览器」视图的工具列上,按一下菜单按钮 ,开启显示选项的下拉菜单。
II. 选Deselect Working Set后,就可以出现原有的档案
5.除错我们的说明是采用逻辑错误,藉此追踪下去;范例之后,要谈一些更进阶的除错主题,例如设定除错启动组态,使用Hot Code Replacement,暂停执行中且不会中断的程序(例如无穷回圈)等等。对IDE而言,能够和程序做交互式的除错,是应该具备的功能。
5.1错误的程序错误的范例程序是要做阶乘(n! = n * (n-1) * (n-2) *... * 1)。此范例会建立多层的堆栈框(stack frame)。
public class ErrorTest { public static void main(String[] args) { System.out.println(factorial(6)); }
public static int factorial(int value) { if (value == 0) { return value; } else { return value * factorial(value - 1); } } } 此例中,是求factorial(n),这个方法会递归的呼叫自己,直到此阶乘被算尽为止。此例是要找出6的阶乘,也就是720,可惜第一次执行此例的结果是0。
图5.1
5.2设定岔断点(Breakpoints)由于没有抛出任何的例外事件,所以问题是在程序的逻辑。要在程序执行期间检视程序,所以要设定岔断点(Breakpoints)来暂停程序。在要暂停的程序代码前面的「Marker Bar」点两下(或是「Run」→「Toggle Line Breakpoint」)来设定岔断点,稍后要移除岔断点,只要再对该岔断点按两下即可。 要安插一个岔断点到return value * factorial(value - 1)的旁边,这样才能观看连续呼叫factorial()方法而建立的阶乘值。在「Marker Bar」上有一个蓝点。 开始除错,「Run」→「Debug As」→「Java Application」(或是按 旁边的箭头选「Debug As」→「Java Application」),还开启「Debug」视景。
图5.2 程序执行到岔断点会暂停,执行暂停处的该列程序会出现在「Debug」编辑器中,标上一个箭头。 先了解「Debug」视景。在左上角的「Debug」视图中可以看见正在除错的程序构成项目。这里的堆栈框都有标上三条横棒 。此例中,我们正在factorial()方法中,已经由mail()方法所呼叫了。「Debug」视图中由左到右的按钮分别是, Resume按钮(在开始执行程序)、 Suspend按钮(暂停程序)、 Terminate按钮(中止除错)、 Disconnet按钮、 Remove All Terminated Launches按钮(除去先前debug session)。 「Debug」视图右边是层迭的视图。分别是「Variables」、「Breakpoints」和「Expressions」。
图5.3
「Variables」视图可以检视区域变量之值。在除错程序时,可以编修区域变量之值(稍后会做),这样可以和程序互动以修正问题。Eclipse会监视这些变量值,当这些变量值有变时,会改变颜色(改成红色)。「Variables」视图底端的部分称为详细资料窗格(Detail Pane),会显示更完整的信息。 「Breakpoints」视图管理程序中的岔断点,对清单中的某各岔断点按右键,在从选单中选择「Enable」、「Disable」、「Remove」或「Remove All」。
图5.4 「Expressions」视图可以计算表示式(稍后会做),在编辑器中选取一道表示式,按右键,选择Inspect选项,就可以在「Expressions」视图中予以计算。
图5.5 若选Display选项时,计算的结果会显示在「Display」视图中。 「Debug」视景中的编辑器和「Java」视景中的编辑器本质上一样的,但是「Debug」视景的编辑器可以检视变量的值,只要鼠标移到变量上即可。
图5.6
5.3逐步除错在暂停的程序中移动最基本的作法是采逐步法(single-steping)。Eclipse提供下列的选项: 5.3.1 Step Into按 按钮(也可以按F5),进入选取的叙述内。如果该叙述是呼叫某方法,则进入执行该方法。
5.3.2 Step Over按 按钮(也可以按F6),掠过选取的叙述内。如果该叙述是呼叫某方法,则不会进入该方法。
5.3.3 Step Return按 按钮(也可以按F7),执行将回复,直到现行方法中下一个 return 陈述式要执行为止,且执行会暂停于下个可执行行上。
5.3.4 Drop to Frame按 按钮,这个指令可以放回与重新输入指定的堆栈框。这项特性类似「回头执行」再整个重新启动程序。如果要放回堆栈框,再重新输入指定的堆栈框,请选取要「放置」的指定堆栈框,再选取Drop to Frame。 请注意下列有关这项特性的警告: n 不能在堆栈中放入原生方法。 n 全体数据不受影响,仍维持其现行值。举例来说,不会清除内含元素的 Static 向量。 附注:只有在基础 VM 支持这项特性时,才会启用这个指令。
5.3.5 Use Step Filters/Step Debug按 按钮(也可以按Shift - F5),当动作切换为开启时,每一个逐行动作(over、into、return)都会套用使用者喜好设定所定义的逐行过滤器集(请参阅「Window」→「Preferences」→「Java」→「Debug」→「Step Filtering」)。当呼叫逐行动作时,逐行作业会一直进行,直到到达未经过滤的位置,或是遇到岔断点为止。
图5.7
例如,我们的debug session线在暂停在return value * factorial(value - 1)这一列程序代码,按F5,就会走进该列,也就是说会开始执行factorial(value - 1)的呼叫,value的变量之新值为5。
图5.8
5.4继续执行我们已经做过程序逐步除错,还可以继续做下去,但是每次呼叫factorial(),每一列程序代码都得跑一遍,实在有点烦。可以改成让程序一直跑,直到碰到岔断点。要这样做只要按「Debug」视图中 Resume按钮。 在这样做之前,也可以设定去监看我们想要监视的变量。在编辑器中对该变量按右键,选Watch的选项,把该变量加到「Expressions」视图中。
图5.9 现在点Resume按钮,程序会继续执行,直到碰到下一个岔断点,看一下value的值为5之后,会发现扔然在同一个factorial()之内,只要重复不断按Resume按钮,可以看出value值的变化。
图5.10
5.5设定岔断点的Hit Count这个factorial()方法要跑6次,所以需要按6次Resume按钮;也可以设定Hit Count来节省时间。有2种方式设定:在「Breakpoints」视图的岔断点按右键 选择Properties
图5.11 开启Breakpoints Properties窗口,勾选Hit Count,并输入6
图5.12 (或是选择Hit Count。
图5.13 开启Set Breakpoint Hit Count窗口,并输入6
图5.14) 重新开始此debug session,程序执行会在第6次碰上岔断点时暂停,注意到value的值是1,而在「Debug」视图中可以看见factorial()连续呼叫的堆栈框。
图5.15 要检视「Debug」视图中任何的堆栈框,以及其中区域变量的值,只要对某堆栈框点一下,使其成为现行堆栈框(active frame)。该区域变量都随着堆栈框保留下来,例如当前堆栈框的value = 1,下一个堆栈框value = 2。
图5.16 以上的执行一切都没问题,然而接下来再按下Step Into按钮时,程序却又跑进factorial()方法,而「Expressions」视图中的value之值变成0,这是不对的。Value值永远不能为0,因为阶乘只能用到正整数。
图5.17 终于找到问题的所在,让factorial()呼叫重复到value = 1的时候,而不是设为0。
图5.18
5.6岔断点组态设定利用Hit Count让除错方便一点,也可以用其它的做法来设定岔断点的组态,一样达到方便除错的目的。在「Breakpoints」视图对岔断点按右键,选择Properties。
图5.19 开启Breakpoints Properties窗口,选取Enable Condition的复选框,然后就可以输入条件式来暂停程序。 Suspend when的选项中: n condition is‘true’(条件式成立) n value of condition changes(值改变时) Suspend Policy n Suspend Thread表示只暂停错误发生时的Thread,其它Thread继续执行。 n Suspend VM表示暂停整个虚拟机器。
图5.20 例如阶乘只能使用正整数,当value == 0时,就不符合阶乘的条件,就让程序暂停。
5.7监视点(Watchpoint)之前使用的岔断点称为Line Breakpoint,除了Line Breakpoint以外,也支持监视点(Watchpoint)、方法岔断点(Method Breakpoint)以及异常岔断点(Exception Breakpoint)。 设定监视点,表示当程序准备去存取或修改某字段时,就会暂停执行。监视点不能设在区域变量身上,只能在字段身上。 设定监视点,在「Java」视景的编辑器中,选取一个字段,然后再选「Run」→「Toggle Watchpoint」。
图5.21 设定完成后,在「Marker Bar」会出现 这个图示。 新的监视点会出现在「Debug」视景中的「Breakpoints」视图里,对该监视点按右键,选择Properties。
图5.22 开启Breakpoints Properties窗口,选项设定跟之前的岔断点差不多,特别的是Suspend on的选项 n Field Access暂停程序之依据是当字段被存取 n Field Modification暂停程序之依据是当字段被修改
图5.23
5.8方法岔断断点(Method Breakpoint)进入或离开某方法时,方法岔断点(Method Breakpoint)会暂停程序执行,至于是进入之时或是离开之时,依据组态的设定。 设定方法岔断点,在「Java」视景的编辑器中,把光标放在要监视的方法前,然后再选「Run」→「Toggle Method Breakpoint」。
图5.24 设定完成后,在「Marker Bar」会出现 这个图示。 新的方法岔断点会出现在「Debug」视景中的「Breakpoints」视图里,对该岔断点按右键,选择Properties。
图5.25 开启Breakpoints Properties窗口,选项设定跟之前的岔断点差不多,特别的是Suspend on的选项 n Method Entry决定岔断点生效之时是在进入该方法 n Method Exit决定岔断点生效之时是在离开该方法
图5.26
5.9异常岔断点(Exception Breakpoint)当例外发生时,可以暂停程序执行。如果程序会抛出例外事件,诸如Null例外事件,而且不知道这个例外事件是从何时(或是何处)发生的,这个岔断点就很有用。可以暂停程序,观看程序中抛出例外事件时,出了什么事。 设定异常岔断点,在「Java」视景的编辑器中,选「Run」→「Add Java Exception Breakpoint」。 新的异常岔断点会出现在「Debug」视景中的「Breakpoints」视图里,对该岔断点按右键,选择Properties。
图5.27 开启Breakpoints Properties窗口,选项设定跟之前的岔断点差不多,特别的是Suspend on的选项 n Caught Exception决定岔断点生效之时是例外事件被捕捉 n Uncaught Exception决定岔断点生效之时是例外事件没被捕捉
图5.28
5.10 Java表示式及变更某些值在除错时,可以在「Expressions」视图中的详细资料窗格内输入表示式,选取表示式,按右键选择Inspect。 例如现在变量值是6,在详细资料窗格内输入表示式value + 1,选取表示式,按右键选择Inspect
图5.29 这样做会把value + 1加进「Expressions」视图中的表示清单。
图5.30 在除错时编辑字段和变量的值,只要对「Variables」视图中的字段或变量点两下,开启Set Value窗口,输入新值。例如在执行期间变更value的值为5。
图5.31 想检查程序针对不同测试值的反应,或是避开某些有问题的值,这个功能非常有用。
6.重构(Refactoring)Java程序重构的目标就是进行全系统程序代码变更,但不会影响程序的行为。Eclipse提供有易于重构程序代码的协助。 重构工具支持若干在 Martin Fowler 所著的 Refactoring: Improving the Design of Existing Code, Addison Wesley 1999 一书中描述的转换,如撷取方法、列入区域变量等。 在执行重构作业时,可以先选择性地预览所有因某个重构动作而发生的变更,然后再决定是否实行。当预览重构作业时,系统将通知潜在的问题,而且将呈现一个清单,列出重构动作将执行的变更。如果未预览重构作业,系统将完整地进行变更,而且将显示任何产生的问题。如果侦测到不容许重构作业继续的问题,则这个作业将会中止,并显示问题清单。 重构指令可在一些 Java 视图(如:套件浏览器、概要)与编辑器的内容菜单中找到。有许多「看似简单」的指令,如移动和重新命名,实际上是重构作业,因为移动 Java 元素以及将它重新命名,通常都需要变更相依档。
6.1重新命名6.1.1区域变量(Local Variable)如果要将区域变量(或方法参数)重新命名,请执行下列动作: I. 在Java编辑器中选取变数(或其参照) II. 「Refactor」→「Rename」 (或是在编辑器按右键,选取「Refactor」→「Rename」) 出现Rename Local Variable窗口
V IV III 图6.1 III. 设定新的Name IV. 如果不想更新已重新命名之区域变量的参照,请取消选取更新已重新命名之元素的参照勾选框。 V. 按一下OK以执行快速的重构作业,或按一下Preview以执行受控制的重构作业。 VI. 预览窗口会显示重构要更动的部份 VII. 下半部的窗格显示两者的比较
VI VII 图6.2
6.1.2字段(Field)如果要将字段重新命名,请执行下列动作: I. 在Java编辑器中选取字段 II. 「Refactor」→「Rename」 (或是在编辑器按右键,选取「Refactor」→「Rename」) 出现Rename Field窗口
VII VI V IV III 图6.3 III. 设定新的Name IV. 如果不想更新已重新命名之字段的参照,请取消选取更新已重新命名之元素的参照勾选框。 V. 如果想更新字符串文字中的参照,请选取更新字符串文字中的参照勾选框。 VI. 如果重构作业找到要重新命名之字段的存取元(getter/setter)方法,则重构作业会建议亦重新命名这些方法(并更新其所有参照): n 如果想要重新命名Getter,请选取重新命名Getter勾选框 n 如果想要重新命名Setter,请选取重新命名Setter勾选框 VII. 按一下OK以执行快速的重构作业,或按一下Preview以执行受控制的重构作业。 VIII. 预览窗口会显示重构要更动的部份 IX. 下半部的窗格显示两者的比较
VIII IX 图6.4
6.1.3方法(Method)如果要将方法重新命名,请执行下列动作: I. 在Java编辑器中选取方法的名称 II. 「Refactor」→「Rename」 (或是在编辑器按右键,选取「Refactor」→「Rename」) 出现Rename Method窗口
V IV III 图6.5 III. 设定新的Name IV. 如果不想更新已重新命名之字段的参照,请取消选取更新已重新命名之元素的参照勾选框。 V. 按一下OK以执行快速的重构作业,或按一下Preview以执行受控制的重构作业。
VII VI 图6.6 VI. 预览窗口会显示重构要更动的部份 VII. 下半部的窗格显示两者的比较
6.1.4类别(Class)或是接口(Interface)如果要将类别重新命名,请执行下列动作: I. 在Java编辑器中选取类别的名称 II. 「Refactor」→「Rename」 (或是在编辑器按右键,选取「Refactor」→「Rename」) 出现Rename Type窗口
VII VI V IV III 图6.7 III. 设定新的Name IV. 如果不想更新已重新命名之类别或接口的参照,请取消选取更新已重新命名之元素的参照勾选框。 V. 如果想更新字符串文字中的参照,请选取更新字符串文字中的参照勾选框。 VI. 如果想更新一般(非Javadoc)批注中的参照,请选取更新一般批注中的参照勾选框。 VII. 按一下确定以执行快速的重构作业,或按一下预览以执行受控制的重构作业。
IX VIII 图6.8 VIII. 预览窗口会显示重构要更动的部份 IX. 下半部的窗格显示两者的比较
6.1.5套件(Package)如果要将套件重新命名,请执行下列动作: I. 在Java编辑器中选取套件的名称 II. 「Refactor」→「Rename」 (或是在编辑器按右键,选取「Refactor」→「Rename」) 出现Rename Package窗口
VII VI V IV III 图6.9 III. 设定新的Name IV. 如果不想更新已重新命名之类别或接口的参照,请取消选取更新已重新命名之元素的参照勾选框。 V. 如果想更新字符串文字中的参照,请选取更新字符串文字中的参照勾选框。 VI. 如果想更新一般(非Javadoc)批注中的参照,请选取更新一般批注中的参照勾选框。 VII. 按下预览,以查看变更的预览,或按下确定,执行重构作业,不查看预览。
VIII 图6.10 VIII. 预览窗口会显示重构要更动的部份
6.2撷取(Extracting)6.2.1撷取常数(Extracting a Constant)如果要撷取常数,请执行下列动作: I. 在Java编辑器中选取常数 II. 「Refactor」→「Extract Constant...」 (或是在编辑器按右键,选取「Refactor」→「Extract Constant...」)
图6.11 出现Extract Constan窗口
IX VIII VII VI V IV III 图6.12 III. 设定新的Name IV. 在存取修饰元清单中,指定方法的可见性(public、default、protected 或 private)。 V. 在呼叫重构作业时,如果只想更换所选的表式示,可选择性地清除将所有出现所选表示式之处换成常数的参照勾选框 VI. 变量名称前是否要带限定者的名称。 n 若选取Qualify constant reference with class name勾选框
图6.13 n 若没有选取Qualify constant reference with class name勾选框
图6.14 VII. 立即显示设定后的状态。 VIII. 讯息。 若没有符合Java命名规则,会出现警告的讯息
图6.15 IX. 按一下确定以执行快速的重构作业,或按一下预览以执行受控制的重构作业。
XI X 图6.16 X. 预览窗口会显示重构要更动的部份 XI. 下半部的窗格显示两者的比较
程序代码如下: public class Extracting { static int jackyInt = 10;
public static void main(String[] args) { System.out.println("This‘s Extracting class."); System.out.println(jackyInt); } }
6.2.2撷取区域变量(Extracting a Local Variable)如果要撷取区域变量,请执行下列动作: I. 在Java编辑器中选取区域变量 II. 「Refactor」→「Extract Local Variable...」 (或是在编辑器按右键,选取「Refactor」→「Extract Local Variable...」)
图6.17 出现Extract Local Variable窗口
VII VI V IV III 图6.18 III. 设定新的Name IV. 在呼叫重构作业时,如果只想更换所选的表式示,可选择性地清除将所有出现所选表示式之处换成区域变量的参照勾选框。 V. 可选择性地选取将区域变量定义成‘final‘。 VI. 立即显示设定后的状态。 若没有符合Java命名规则,会出现警告的讯息
图6.19 VII. 按下预览,以查看变更的预览,或按下确定,执行重构作业,不查看预览。
IX VIII 图6.20 VIII. 预览窗口会显示重构要更动的部份 IX. 下半部的窗格显示两者的比较
程序代码如下: public class Extracting { static int jackyInt = 10; String jackyString = "jacky";
public static void main(String[] args) { System.out.println("This‘s Extracting class."); System.out.println(jackyInt); }
public void jackyMethod() { System.out.println(jackyString); } }
6.2.3撷取方法(Extracting a Method)如果要撷取方法,请执行下列动作: I. 在Java编辑器中选取方法 II. 「Refactor」→「Extract Method...」 (或是在编辑器按右键,选取「Refactor」→「Extract Method...」)
图6.21 出现Extract Methode窗口
IX VIII VII VI V IV III X 图6.22 III. 设定新的Name IV. 在存取修饰元清单中,指定方法的可见性(public、default、protected或private)。 V. 可以重新排列新方法的参数,并且将它重新命名。 重新命名
图6.23 重新排列
图6.24 VI. 可以新增掷出执行时期异常状况到方法签章中,方法是选取对应的勾选框。 VII. 产生Javadoc批注 VIII. 取代重复的程序代码片段 IX. 立即显示设定后的状态。 若没有符合Java命名规则,会出现警告的讯息
图6.25 X. 按一下确定以执行快速的重构作业,或按一下预览以执行受控制的重构作业。
XII XI 图6.26 XI. 预览窗口会显示重构要更动的部份 XII. 下半部的窗格显示两者的比较
程序代码如下: public class Extracting { static int jackyInt = 10;
String jackyString = "jacky";
public static void main(String[] args) { System.out.println("This‘s Extracting class."); System.out.println(jackyInt); }
public void jackyMethod(String str1, int int1) { if (str1 != null) { if (int1 > 0) {
} } } }
6.3列入(Inlining)程序代码如下: public class Inlining { static final int jackyInt = 10;
public static void main(String[] args) { System.out.println("This‘s Inlining class."); System.out.println(jackyInt); }
public void jackyMethod() { jackyMethod("jacky", 5); }
public void jackyMethod(String str1, int int1) { String jackyString = "Jacky"; if (jackyString != null) { System.out.println(jackyString); } } }
6.3.1列入常数(Inlining a Constant)如果要列入常数,请执行下列动作: I. 在Java编辑器中选取常数 II. 「Refactor」→「Extract Inlining...」 (或是在编辑器按右键,选取「Refactor」→「Extract Inlining...」)
图6.27 出现Inline Constant窗口
图6.28 有选Delete constant declaration,常数会被删除
图6.29 没有选Delete constant declaration,常数不会被删除
图6.30 预览窗口会显示重构要更动的部份,下半部的窗格显示两者的比较
图6.31
6.3.2列入区域变量(Inlining a Local Variable)如果要列入区域变量,请执行下列动作: I. 在Java编辑器中选取区域变量 II. 「Refactor」→「Extract Inlining...」 (或是在编辑器按右键,选取「Refactor」→「Extract Inlining...」)
图6.32 出现Inline Local Variable窗口
图6.33 预览窗口会显示重构要更动的部份,下半部的窗格显示两者的比较
图6.34
6.3.3列入方法(Inlining a Method)如果要列入方法,请执行下列动作: I. 在Java编辑器中选取方法 II. 「Refactor」→「Extract Inlining...」 (或是在编辑器按右键,选取「Refactor」→「Extract Inlining...」)
图6.35 出现Inline Constant窗口
图6.36 有选Delete method declaration,方法会被删除
图6.37 没有选Delete method declaration,方法不会被删除
图6.38 这里可以选择要重构的动作是针对该方法全部的呼叫或是只针对选择的部份
图6.39 预览窗口会显示重构要更动的部份,下半部的窗格显示两者的比较
6.4变更方法签章(Signature)如果要变更方法签章,请执行下列动作: I. 在Java编辑器中选取方法 II. 「Refactor」→「Change Method Signature...」 (或是在编辑器按右键,选取「Refactor」→「Change Method Signature...」)
图6.40 出现Inline Constant窗口
X IX VIII VII VI V IV III 图6.41 III. 设定Access modifier IV. 设定Return type V. 设定新的Method Name VI. Parameters页签 n 使用新增按钮来新增参数;然后,可以在表格中编辑它的类型、名称和默认值
图6.42 n 选取一个或多个参数,并使用上和下按钮,以重新排序参数(可查看参数清单下的签章预览) VII. Exceptions页签 可以新增或是删除Exception
图6.43 VIII. 立即显示设定后的状态。 IX. 讯息。 X. 按预览,以查看预览,或按确定,执行重构作业,不查看预览
XI XII 图6.44 XI. 预览窗口会显示重构要更动的部份 XII. 下半部的窗格显示两者的比较 附注:这项重构作业会变更所选方法和所有置换它之方法的签章。此外,将更新所有参照以使用签章。
6.5移动Java元素(Moving Java Elements)程序代码如下: public class Moving { static int jackyInt; String jackyString = "Jacky";
public static void main(String[] args) { System.out.println("This‘s Moving class."); System.out.println(jackyInt); }
public void jackyMethod() { System.out.println(jackyString); } } 6.5.1字段(Field)如果要移动字段,请执行下列动作: I. 在Java编辑器中选取字段 II. 「Refactor」→「Change Move...」 (或是在编辑器按右键,选取「Refactor」→「Move...」)
图6.45 出现Textual Move窗口
图6.46 III. 选择要移动的目的地,按确定即可
6.5.2 Static Members如果要移动Static Members,请执行下列动作: I. 在Java编辑器中选取Static Members II. 「Refactor」→「Change Move...」 (或是在编辑器按右键,选取「Refactor」→「Move...」)
图6.47 出现Move Static Members窗口
图6.48 III. 按浏览按钮,开启Choose Type窗口,选择要移动的目的地
图6.49 IV. 按预览,以查看预览,或按确定,执行重构作业,不查看预览 V. 预览窗口会显示重构要更动的部份,下半部的窗格显示两者的比较
图6.50
6.6自行封装字段(Self Encapsulating a Field)如果要自行封装字段,请执行下列动作: I. 在Java编辑器中选取字段 II. 「Refactor」→「Encapsulate Field...」 (或是在编辑器按右键,选取「Refactor」→「Encapsulate Field...」)
图6.51 出现Encapsulate Field窗口
IX VIII VII VI V IV III 图6.52 III. 在Getter名称字段中输入Getter的名称。 IV. 在Setter名称字段中输入Setter的名称。 V. 使用在下列后面插入新方法组合框,指出Getter与(或)Setter方法的位置。 VI. 从存取修饰元群组中选取一个圆钮,以指定新方法的可见性。 VII. 在宣告字段所在的类别中,读取权和写入权可为直接的,或者可以使用Getter和Setter。 n 如果想要重构作业将所有这些存取权转换成使用Getter和Setter,请选取使用Getter和Setter圆钮。 n 如果不想让重构作业修改宣告字段所在之类别中的现行字段存取权,请选取保留字段参照圆钮。 VIII. 若要产生Javadoc批注,则选取勾选框 IX. 如果要先预览再进行重构作业,请按预览,或如果要直接进行重构作业而不预览,请按确定。
XI X 图6.53 X. 预览窗口会显示重构要更动的部份 XI. 下半部的窗格显示两者的比较
7.要诀和技巧(Tips and Tricks)7.1编辑程序文件(Editing Source)
7.2搜寻(Searching)
7.3程序代码导览和读取(Code navigation and reading)
7.4 Java视图(Java views)
7.5除错(Debugging)
7.6各种(Various)
|
|
来自: 思奇剑 > 《Eclipse&JBuilder》