• 1. Eclipse使用手册王凌武
  • 2. 1. Eclipse简介 Eclipse就像软件开发者的『打铁铺』,它一开始备有火炉、铁钻与铁锤。就像铁匠会用现有的工具打造新的工具,也能用Eclipse打造新工具来开发软件-这些新工具可扩充Eclipse的功能。(Eclipse其中一个卖点就是它的扩充性)
  • 3. 1.1 历史背景 Eclipse这样功能完整且成熟的开发环境,是由蓝色巨人IBM所释出。IBM花了4千万美金来开发这个IDE(Integrated Development Environment)。第一版1.0在2001年11月释出,随后逐渐受到欢迎。 Eclipse已经部分开放源码(Open Source Project),大部分的开发扔然掌握在IBM手中,但是有一部份由eclipse.org的软件联盟主导。(http://www.eclipse.org) Eclipse项目由Project Management Committee(PMC)所管理,它综观项目全局,Eclipse项目分成3个子项目: 平台-Platform 开发工具箱-Java Development Toolkit(JDT) 外挂开发环境-Plug-in Development Environment(PDE) 这些子项目又细分成更多子项目。例如Platform子项目包含数各组件,如Compare、Help与Search。JDT子项目包括三各组件:User Interface(UI)、核心(Core)及除错(Debug)。PDE子项目包含两各组件:UI与Core。
  • 4. 1.2 开放源码软件 Eclipse是开放源码软件,结果很多人在使用的时候都不注重合法权的问题。开放原始码软件让使用者能够取得软件的源码,有权去修改和散布这个软件。如果想修改软件,这件事的另一面就是,除非其它人对修改后的软件也有相同的权力,否则是不能散布修改后的软件,这种权利和著作权(copyright)相反,开放源码项目中有时称之为著作义(copyleft)。 有些开放源码许可证,坚持要求任何和其它开放源码合组成的软件也必须是开放源码。然而,Eclipse使用的开放源码许可证:公共公众许可书-Common Public License(CPL)作为授权方式,设计上是可以容许商业利益的。CPL可以容许Eclipse和其它开放源码软件合组时,能够以更严谨的许可证散布软件,以求用于商业途径。CPL经过Open Software Initiative(OSI)认证,其内容符合开放原始码授权的需求。
  • 5. 1.3 Eclipse版本介绍 可以从eclipse.org网站(http://www.eclipse.org/downloads)下载,可以发现『最新』与『最好』的版本,这两种版本通常不一样,基本上有四种版本-或建置(build)可供下载: 发布版(Release builds) 由Eclipse开发团队所宣称的主要稳定版本。Release builds经过完整测试,并具有一致性、定义清楚的功能。它的定位就跟上市的商业软件一样。 稳定版(Stable builds) 比Release build新一级的版本,经由Eclipse开发团队测试,并认定它相当稳定。新功能通常会在此过渡版本出现。它的定位就跟商业软件的beta版一样。 整合版(Integration builds) 此版本的各个独立的组件已经过Eclipse开发团队认定具稳定度,但不保证兜在一起没问题。若兜在一起够稳定,它就有可能晋级成Stable build。 当日最新版(Nightly builds) 此版本显然是从最新的原始码产生出来的。可想而知,此版本当然不保证它跑起来没问题,搞不好还有严重的bug。
  • 6. 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以捐出一个语言套件,支持中文(繁体与简体)、法文、德文、意大利文、日文、韩文、葡萄牙文(巴西)与西班牙文。
  • 7. 2. Eclipse Platform Eclipse平台的目的,是提供多种软件开发工具的整合机制,这些工具会实作成Eclipse外挂程序,平台必须用外挂程序加以扩充才有用处。Eclipse设计美妙之处,在于所有东西都是外挂,除了底层的核心以外。这种外挂设计让Eclipse具备强大扩充性,但更重要的是,此平台提供一个定义明确的机制,让各种外挂程序共通合作(透过延伸点extension points)与贡献(contributions)),因此新功能可以轻易且无缝地加入平台。
  • 8. 2.1架构 Eclipse平台由数种组件组成:平台核心(platform kernel)、工作台(workbench)、工作区(workspace)、团队组件(tram component)以及说明组件(help)。
  • 9. 2.2菜单和工具列12345678
  • 10. 1.菜单(Menu Bar) 2.工具列(Tool Bar) 3.快速视图(Fast View) 4.Package Explorer视图 5.Editor视图 6.快捷方式工具列(Shortcut Toolbar) 7.Outline视图 8.Tasks视图和Console视图
  • 11. 3. Java程序开发 在Eclipse中做任何事之前,都必须新增一个项目。Eclipse可透过外挂支持数种项目(如EJB或C/C++),预设支持下列三种项目: Java Project – Java开发环境 Plug-in Project – 自行开发plug-in的环境 Sample Project – 提供操作文件的ㄧ般环境 如图
  • 12. (本页无文本内容)
  • 13. 3.1建立Java项目 新增Java项目的步骤: I. 选择「File」→「New」→「Project」 (或是在『Package Explorer』窗口上按鼠标右键,选择「New」→「Project」选单选项) (或是按工具列上New Java Project的按钮) II. 在New Project对话框(图4.1),选Java Project (或是展开Java的数据夹,选Java Project,如图3.2)
  • 14. (本页无文本内容)
  • 15. III. 在New Java Project的窗口中输入Project的名称,如图3.3 IV. 在Project Layout中可以选择编译好的档案是否要和原始档放在同一个目录下,如图3.3 V. 按下FinishIIIIVV
  • 16. 3.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原始文件
  • 17. IIIIIIVVVI
  • 18. 3.3程序代码完成功能3.3.1 Code Completion 在Eclipse中打左括号时会立刻加上又括号;打双引号(单引号)时也会立刻加上双引号(单引号)。 3.3.2 Code Assist 在输入程序代码时,例如要打System.out.println时,打完类别名称后暂停一会儿,Eclipse会显示一串建议清单,列出此类别可用的方法和属性,并附上其Javadoc批注。可以直接卷动选出然后按Enter。
  • 19. (本页无文本内容)
  • 20. 也可以只打类别开头的字母,然后按Alt - /,一样会显示一串建议清单。
  • 21. Alt - /这个组合键不仅可以可以显示类别的清单,还可以一并显示已建立的模板程序代码,例如要显示数组的信息,只要先打for,在按Alt - /这个组合键,就会显示模板的请单。
  • 22. 3.4执行Java程序 大多数的程序不需特定的启动组态(Launch Configuration),首先确定要执行的程序代码在编辑器中有选到(页签变蓝色),再执行下列步骤: I. 选单选「Run」→「Run as」→「Java Application」 II. 若有修改过程序,Eclipse会询问在执行前是否要存档 III. Tasks试图会多出Consol页签并显示程序输出 程序若要传参数、或是要使用其它的Java Runtim...等等,则需要设定程序启动的相关选项,执行程序前,新增一个启动组态或选用现有的启动组态。
  • 23. 选单选「Run」→「Run」,开启Run的设定窗口 Main 标签用以定义所要启动的类别。请在项目字段中,输入内含所要启动之类别的项目名称,并在主要类别字段中输入主要类别的完整名称。如果想要程序每当在除错模式中启动时,在 main 方法中停止,请勾选Stop in main勾选框。 附注:不必指定一个项目,但这样做可以选择预设类别路径、来源查阅路径,以及 JRE。 自变量(Arguments)标签用以定义要传递给应用程序与虚拟机器(如果有的话)的自变量。也可以指定已启动应用程序要使用的工作目录。 JRE 卷标用以定义执行或除错应用程序时所用的 JRE。可以从已定义的 JRE 选取 JRE,或定义新的 JRE。 类别路径(Classpath)卷标用以定义在执行或除错应用程序时所用类别文件的位置。依预设,使用者和 bootstrap 类别位置是从相关联项目的建置路径衍生而来。可以在这里置换这些设定。
  • 24. 程序文件(Source)卷标用以定义当除错 Java 应用程序时,用来显示程序文件之程序文件的位置。依预设,这些设定是从相关联项目的建置路径衍生而来。可以在这里置换这些设定。 环境(Environment)标签会定义在执行 Java 应用程序或者对它进行除错时,所要使用的环境变量值。依预设,这个环境是继承自 Eclipse 执行时期。可以置换或附加至继承的环境。 共享(Common)卷标定义有关启动配置的一般信息。可以选择将启动配置储存在特定档案,以及指定当启动配置启动时,哪些视景将变成作用中。
  • 25. 在Arguments的页签中输入要传入的值,若是多值的话,用空格键隔开
  • 26. (本页无文本内容)
  • 27. 4. 自定义开发环境 程序代码格式 在「Window」→「Preferences」→「Java」→「Code Style」→「Code Formatter」
  • 28. 按Show的按钮,出现Show Profile的窗口,里面的各个页签,可以设定Java Code Style 设定完成后,可以Export成一个档案;以利下次设定Java Code Style时,可以利用Import的方式,产生一致的程序风格。
  • 29. 5. 建立 JAR 档案 如果要在工作台中建立新 JAR 档,请执行下列动作: I. 在「Package Explorer」中,可以选择性地预选一或多个要汇出的 Java 元素。(在步骤IV中,这些会在JAR Package Specification精灵页面中自动选出。) II. 从快速菜单或从菜单列的File菜单,选取Export。 III. 选取JAR file,然后按一下Next。
  • 30. (本页无文本内容)
  • 31. 在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。
  • 32. IIIIVVVIII
  • 33. 6 调试 6.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。
  • 34. 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。
  • 35. (本页无文本内容)
  • 36. 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」视图。
  • 37. (本页无文本内容)
  • 38. 程序执行到断点会暂停,执行暂停处的该列程序会出现在「Debug」编辑器中,标上一个箭头。 先了解「Debug」视图。在左上角的「Debug」视图中可以看见正在查错的程序构成项目。这里的堆栈框都有标上三条横棒。此例中,我们正在factorial()方法中,已经由mail()方法所调用了。「Debug」视图中由左到右的按钮分别是, Resume按钮(在开始执行程序)、 Suspend按钮(暂停程序)、 Terminate按钮(中止查错)、 Disconnet按钮、 Remove All Terminated Launches按钮(除去先前debug session)。 「Debug」视图右边是层迭的视图。分别是「Variables」、「Breakpoints」和「Expressions」。
  • 39. (本页无文本内容)
  • 40. 「Variables」视图可以检视局部变量的值。在查程序错误时,可以编辑局部变量之值(稍后会做),这样可以和程序互动以修正问题。Eclipse会监视这些变量值,当这些变量值有变时,会改变颜色(改成红色)。「Variables」视图底端的部分称为详细资料窗格(Detail Pane),会显示更完整的信息。 「Breakpoints」视图管理程序中的断点,对清单中的某各断点按右键,在从选单中选择「Enable」、「Disable」、「Remove」或「Remove All」。
  • 41. (本页无文本内容)
  • 42. 「Expressions」视图可以计算表示式(稍后会做),在编辑器中选取一道表示式,按右键,选择Inspect选项,就可以在「Expressions」视图中予以计算。
  • 43. 若选Display选项时,计算的结果会显示在「Display」视图中。 「Debug」视图中的编辑器和「Java」视图中的编辑器本质上一样的,但是「Debug」视图的编辑器可以检视变量的值,只要鼠标移到变量上即可。
  • 44. 6.3逐步查错 在暂停的程序中移动最基本的作法是采逐步法(single-steping)。Eclipse提供下列的选项: 6.3.1 Step Into 按按钮(也可以按F5),进入选取的叙述内。如果该叙述是呼叫某方法,则进入执行该方法。 6.3.2 Step Over 按按钮(也可以按F6),掠过选取的叙述内。如果该叙述是呼叫某方法,则不会进入该方法。 5.3.3 Step Return 按按钮(也可以按F7),执行将回复,直到现行方法中下一个 return 陈述式要执行为止,且执行会暂停于下个可执行行上。
  • 45. 5.4继续执行 我们已经做过程序逐步除错,还可以继续做下去,但是每次呼叫factorial(),每一列程序代码都得跑一遍,实在有点烦。可以改成让程序一直跑,直到碰到岔断点。要这样做只要按「Debug」视图中 Resume按钮。 在这样做之前,也可以设定去监看我们想要监视的变量。在编辑器中对该变量按右键,选Watch的选项,把该变量加到「Expressions」视图中。
  • 46. (本页无文本内容)
  • 47. 现在点Resume按钮,程序会继续执行,直到碰到下一个岔断点,看一下value的值为5之后,会发现扔然在同一个factorial()之内,只要重复不断按Resume按钮,可以看出value值的变化。
  • 48. 6.5 设定断点的Hit Count 这个factorial()方法要跑6次,所以需要按6次Resume按钮;也可以设定Hit Count来节省时间。有2种方式设定:在「Breakpoints」视图的岔断点按右键 选择Properties
  • 49. (本页无文本内容)
  • 50. 开启Breakpoints Properties窗口,勾选Hit Count,并输入6
  • 51. 重新开始此debug session,程序执行会在第6次碰上断点时暂停,注意到value的值是1,而在「Debug」视图中可以看见factorial()连续调用的堆栈框。
  • 52. 6.6监视点(Watchpoint)之前使用的断点称为Line Breakpoint,除了Line Breakpoint以外,也支持监视点(Watchpoint)、方法断点(Method Breakpoint)以及异常断点(Exception Breakpoint)。 设定监视点,表示当程序准备去存取或修改某字段时,就会暂停执行。监视点不能设在区域变量身上,只能在字段身上。 设定监视点,在「Java」视景的编辑器中,选取一个字段,然后再选「Run」→「Toggle Watchpoint」。
  • 53. (本页无文本内容)
  • 54. 设定完成后,在「Marker Bar」会出现这个图示。 新的监视点会出现在「Debug」视景中的「Breakpoints」视图里,对该监视点按右键,选择Properties。
  • 55. 开启Breakpoints Properties窗口,选项设定跟之前的断点差不多,特别的是Suspend on的选项 Field Access暂停程序之依据是当字段被存取 Field Modification暂停程序之依据是当字段被修改
  • 56. 6.6方法断点(Method Breakpoint) 进入或离开某方法时,方法断点(Method Breakpoint)会暂停程序执行,至于是进入之时或是离开之时,依据组态的设定。 设定方法断点,在「Java」视图的编辑器中,把光标放在要监视的方法前,然后再选「Run」→「Toggle Method Breakpoint」。
  • 57. (本页无文本内容)
  • 58. 设定完成后,在「Marker Bar」会出现这个图示。 新的方法岔点会出现在「Debug」视景中的「Breakpoints」视图里,对该断点按右键,选择Properties。
  • 59. 开启Breakpoints Properties窗口,选项设定跟之前的岔断点差不多,特别的是Suspend on的选项 Method Entry决定岔断点生效之时是在进入该方法 Method Exit决定岔断点生效之时是在离开该方法
  • 60. 6.7异常断点(Exception Breakpoint)当异常发生时,可以暂停程序执行。如果程序会抛出异常事件,诸如Null异常事件,而且不知道这个异常事件是从何时(或是何处)发生的,这个断点就很有用。可以暂停程序,观看程序中抛出异常事件时,出了什么事。 设定异常断点,在「Java」视景的编辑器中,选「Run」→「Add Java Exception Breakpoint」。 新的异常断点会出现在「Debug」视景中的「Breakpoints」视图里,对该断点按右键,选择Properties。
  • 61. (本页无文本内容)
  • 62. 开启Breakpoints Properties窗口,选项设定跟之前的岔断点差不多,特别的是Suspend on的选项 Caught Exception决定断点生效之时是例外事件被捕捉 Uncaught Exception决定断点生效之时是例外事件没被捕捉