配置Eclipse来开发Java 程序
Eclipse的设置
用惯了Visual Studio, 切换到Eclipse有很多不习惯的地方. 总结了几点, 以免忘记后重复摸索. 本文是基于Eclipse 3.1.0, 可能不适用于更新的Eclipse版本.
强烈推荐下面2个Eclipse教程:
http://www.javahotchocolate.com/tutorials/use-eclipse.html
http://www3.ntu.edu.sg/home/ehchua/programming/howto/EclipseJava_HowTo.html
如何理解Eclipse的workspace和project呢? Eclipse 的workspace其实是一个sandbox, 在不同的sandbox中, 有不同的eclipse配置, 不同的JRE设置, 当然包含的项目也不同. 推荐的做法是, 让一个workspace在地位上等同visual studio的一个solution, 不要将好不相关的项目放在一个worksapce下. 比如: 我们为一个大的项目创建一个workspace, 每个单一的module可以创建project来实现.
==================
Eclipse 项目基本上有如下几个部分组成:
==================
.classpath文件,<必需>, 包含项目的classpath信息
.project文件, <必需>, 包含项目的基本信息, 如名称
.settings目录,<不是必需的>, 包含项目的编译器设置信息
lib目录,<不是必需的>, 推荐作为一些外部jar的存放目录
src目录,<不是必需的>, 推荐作为source的根目录
bin目录,<不是必需的>, 推荐作为项目的output目录
==================
Compliler的设置
==================
在新建一个Java Project, 我们可以选择使用哪个版本的JRE. 在项目生成后也可以调整在菜单Project/Property窗口, Java Compiler节点设置.
==================
如何编译项目
==================
Visual Studio可以直接 Build Project或Solution, 在Eclipse的Run菜单怎么也找不到类似的菜单项. 后来在Project菜单找到 Build All (Ctrl+B)/ Build Project/ Build Automatically, 只有当Build Automatically为禁用状态, 才可能选Build All进行手动Build.
==================
设置项目src和output的布局
==================
Windows菜单Preferences窗体的Java/Build Path可以指定新项目默认的source和output的布局方案, 有2种备选方案, (1)project方案, 这种方案是将code和编译后的*.class放在一起. (2)Folders方案, 这种方案是将source和output放置在不同的目录中, 推荐使用Folders方案.
当然在创建项目后, 也有机会修改output的路径, 方法是: 在Project的Property窗体的Java Build Path节点, 有Default output folder, 比如项目名为Test, 我认为输出目录设置为Test/bin是一个好的推荐.
==================
Library的设置
==================
Visual Studio的Project保存reference路径优先选用相对路径, 当然base路径为项目目录. 这就很方便了, 无论team中谁打开这个项目, 都不会碰到找不到依赖库的问题, 只要大家在获取项目源码时候, 一同获取reference 包.
其实, Eclipse也可以做到这点, 假设我们的project名为 Project_Abc, 下面是几种方法:
方法1:在workspace/Project_Abc目录新增lib子目录, 复制架包到这个目录, 然后在Eclipse的Package Explorer中刷新Project_Abc项目, 就会在Package Explorer中看到有一个新的节点lib. 然后在Project_Abc的properties属性, 在Java Build Path节点的libraries tab页面中, 使用按钮Add JARs的将架包加入. 这种方法适合于架包比较小的情况, 因为你需要将架包加到Project_Abc的lib文件夹中, 而且不需要有太多的手动动作.
方法2: 在Project_Abc的properties属性, 在Java Build Path节点的libraries tab页面中, 使用按钮Add External JARs的将架包加入, 然后退出eclipse, 手动打开workspace/Project_Abc/.classpath文件, 修改对应架包的目录为相对路径. 这个方法比方法1适用面更广, 因为架包不必一定要放在Project_Abc/lib目录中.
还有另外几个方法, 详见下面文章.
<<Eclipse3.2/3.3中指定第三方包(JAR)和类路径(CLASSPATH)的几个方法>> http://blog.csdn.net/ruyanhai/archive/2007/10/16/1826876.aspx
<<使用类路径容器简化 Eclipse 类路径>>
http://www.ibm.com/developerworks/cn/education/opensource/os-eclipse-classpath/section2.html
==================
如何查看一个架包的源码
==================
有时候想在Eclipse中某个架包的源码, 要完成这个功能, 需要你有该jar的源码, 然后在eclipse中将源码attach到jar上. 方法是: 在Eclipse的package explorer中选中jar, 然后右击菜单中打开property窗体, 配置Java source attachment节点内容即可.
==================
几个快捷键
==================
(0) Ctrl+Shift+L, 显示所有快捷键功能列表
(1) Alt+Shift+/, 可以提示一个函数的参数, 可以使用Ctrl+Space代替
(2) Alt+?, Eclipse将试着直接进行Code Completion, 比如补齐函数名, 补齐变量名, 但第一次补齐有可能不对, 你需要不断按Alt+?, 来找到你要的东西, 这样的话, 效率就很差, 不如直接使用Ctrl+Space, 然后我们自己选.
(3) Ctrl+Space, 代码智能提示, 多数情况下, 会弹出一个下拉框供我们选择合适的代码
(4) Ctrl+1, 当某行代码有误时, Eclipse Editor左边框会出现一个小红叉, 鼠标点击这个小红叉, Eclipse就会弹出quick fix对话框, 当然我们也可以用Ctrl+1快捷键来调出quick fix对话框
(5) Ctrl+B, Build 所有的project
(6) F3, 跳转到类或对象定义的地方
(7) Ctrl+Alt+H, 可以显示某个方法在哪些地方被调用, 即显示Call Hierarchy, 这个快捷键仅仅适用于查看方法的调用, 我暂时还没有找到适用于属性的快捷键
(8) Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在status bar 中显示没有找到
(9) Ctrl+F6:切换到下一个编辑器。Ctrl+Shift+F6:切换到上一个编辑器。
(10)【Alt+←】、【Alt+→】 后退历史记录和前进历史记录,在跟踪代码时非常有用,用户可能查找了几个有关联的地方,但可能记不清楚了,可以通过这两个快捷键定位查找的顺序。
==================
如果组织JUnit 用例代码
==================
以下部分摘自文章, <<使用junit时源代码和测试代码的组织>>, http://www.99inf.net/SoftwareDev/Java/29964.htm
http://www.clarkware.com/articles/JUnitPrimer.html
推荐的JUnit代码应该和被测试代码放在同一个package中, 不同的目录下. 这样既可以方便地测试protected方法/域,同时不会导致源代码和测试代码混在一起。也就是组织成下面这样:
1. src
2. com
3. xyz
4. HelloWorld.java
5. test
6. com
7. xyz
8. HelloWorldTest.java
使用的是Eclipse, 组织上面的结构非常简单, 只需要在project中新增一个source folder, 专门用来存放junit代码, 比如test目录.
关于Junit4的使用, 可以看一下下面2个短文.
http://www.cavdar.net/2008/07/21/junit-4-in-60-seconds/
http://www.javabeat.net/tips/159-junit-40-example.htm
有关eclipse 插件, 我将专门汇总一个文章.