Recently in Eclipse Category

Eclipse快速上手指南 (4)

| 1 Comment

6.在Eclipse中使用CVS

版本控制在团队开发中是必不可少的。
CVS是优秀的开源版本控制软件,Eclipse本身就内置了对CVS的支持,只需简单配置,即可使用CVS

首先我们要正确安装并配置好
CVS服务器,通常Linux Server都自带CVS服务,不过命令行操作比较繁琐。Windows下也有简单易用的CVS服务器,这里我们推荐CVSNT,可以下载CVSNT 2.0.51a,安装并启动CVSNT



然后切换到Repositories面板,添加一个Repository,命名为/cvs-javaCVSNT会提示是否初始化这个Repository,选择是:


然后在Advanced面板上选中“Pretend to be a Unix CVS version”:


然后,在Windows账户中为每一个开发人员添加用户名和口令。

现在,
CVSNT的安装配置已经完成,下一步,启动Eclipse,我们可以使用原有的Hello工程,或者新建一个Project,然后选择菜单Window->Show View->Other,打开CVS->CVS Repositories



然后点击按钮,添加一个Repository



注意用户名和口令直接填Windows的用户名和口令,然后选中“Validate Connection on Finish”,点击Finish完成:


首先,我们要将一个现有的工程放到CVS服务器中,切换到Package Explorer,选中Hello工程,右键点击,选择Team->Share Project…



使用刚才我们添加的Repository,继续,并将所有文件都添加到CVS中,最后Eclipse提示Commit



填入一个简单的注释,确定,然后Eclipse会把整个工程提交到CVS服务器,可以在Package Explorer中看到图标发生了变化,Hello.java文件后面会有版本号1.1。在CVS Repositories面板中刷新,可以看到刚添加进来的工程:



在团队开发中,当创建了一个基本的工程并提交到CVS后,别的开发人员首先要Check Out这个工程到各自的本地计算机上,这里为了演示,首先我们在Package Explorer中删除Hello工程,然后打开CVS Repositories(如果没有看到Repository就按照上面的方法添加Repository),选择Hello工程,右键点击,选择Check Out As…



作为一个Project签出,就可以在Package Explorer中看到签出的工程。

当对某些源文件作了修改后,需要提交更改到CVS服务器。选中更改的文件或工程,右键点击,选择Team->Commit…



然后填入简单的注释,就可以提交到CVS服务器上了,可以看到源文件的版本号变成了1.2

以上简单介绍了如何搭建CVS服务器以及在Eclipse中如何使用CVS,可以参考CVS手册以便了解BranchMerge等更多功能的使用。

Eclipse快速上手指南 (3)

| 1 Comment

5. 在Eclipse中使用Ant


Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率。如果你现在还没有开始使用Ant,那就要赶快开始学习使用,使自己的开发水平上一个新台阶。

Eclipse中已经集成了Ant,我们可以直接在Eclipse中运行Ant。

以前面建立的Hello工程为例,创建以下目录结构:



新建一个build.xml,放在工程根目录下。build.xml定义了Ant要执行的批处理命令。虽然Ant也可以使用其它文件名,但是遵循标准能更使开发更规范,同时易于与别人交流。


通常,src存放Java源文件,classes存放编译后的class文件,lib存放编译和运行用到的所有jar文件,web存放JSP等web文件,dist存放打包后的jar文件,doc存放API文档。


然后在根目录下创建build.xml文件,输入以下内容:



<?xml version="1.0"?>
<project name="Hello world" default="doc">


 <!-- properies -->
    <property name="src.dir" value="src" />
    <property name="report.dir" value="report" />
    <property name="classes.dir" value="classes" />
    <property name="lib.dir" value="lib" />
    <property name="dist.dir" value="dist" />
 <property name="doc.dir" value="doc"/>


    <!-- 定义classpath -->
    <path id="master-classpath">
        <fileset file="${lib.dir}/*.jar" />
        <pathelement path="${classes.dir}"/>
    </path>


    <!-- 初始化任务 -->
    <target name="init">
    </target>


    <!-- 编译 -->
    <target name="compile" depends="init" description="compile the source files">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" target="1.4">
            <classpath refid="master-classpath"/>
        </javac>
    </target>


    <!-- 测试 -->
    <target name="test" depends="compile" description="run junit test">
        <mkdir dir="${report.dir}"/>
        <junit printsummary="on"
                haltonfailure="false"
                failureproperty="tests.failed"
                showoutput="true">
            <classpath refid="master-classpath" />
            <formatter type="plain"/>
            <batchtest todir="${report.dir}">
                <fileset dir="${classes.dir}">
                    <include name="**/*Test.*"/>
                </fileset>
            </batchtest>
        </junit>
        <fail if="tests.failed">
        ***********************************************************
        ****  One or more tests failed!  Check the output ...  ****
        ***********************************************************
        </fail>
    </target>


    <!-- 打包成jar -->
    <target name="pack" depends="test" description="make .jar file">
     <mkdir dir="${dist.dir}" />
        <jar destfile="${dist.dir}/hello.jar" basedir="${classes.dir}">
            <exclude name="**/*Test.*" />
            <exclude name="**/Test*.*" />
        </jar>
    </target>


    <!-- 输出api文档 -->
    <target name="doc" depends="pack" description="create api doc">
     <mkdir dir="${doc.dir}" />
     <javadoc destdir="${doc.dir}"
            author="true"
            version="true"
            use="true"
            windowtitle="Test API">
            <packageset dir="${src.dir}" defaultexcludes="yes">
                <include name="example/**" />
            </packageset>
            <doctitle><![CDATA[<h1>Hello, test</h1>]]></doctitle>
            <bottom><![CDATA[<i>All Rights Reserved.</i>]]></bottom>
            <tag name="todo" scope="all" description="To do:" />
        </javadoc>
    </target>
</project>


以上xml依次定义了init(初始化),compile(编译),test(测试),doc(生成文档),pack(打包)任务,可以作为模板。


选中Hello工程,然后选择“Project”,“Properties”,“Builders”,“New…”,选择“Ant Build”:



填入Name:Ant_Builder;Buildfile:build.xml;Base Directory:${workspace_loc:/Hello}(按“Browse Workspace”选择工程根目录),由于用到了junit.jar包,搜索Eclipse目录,找到junit.jar,把它复制到Hello/lib目录下,并添加到Ant的Classpath中:



然后在Builder面板中钩上Ant_Build,去掉Java Builder:



再次编译,即可在控制台看到Ant的输出:



Buildfile: F:\eclipse-projects\Hello\build.xml


init:


compile:
       [mkdir] Created dir: F:\eclipse-projects\Hello\classes
       [javac] Compiling 2 source files to F:\eclipse-projects\Hello\classes


test:
       [mkdir] Created dir: F:\eclipse-projects\Hello\report
       [junit] Running example.HelloTest
       [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.02 sec


pack:
       [mkdir] Created dir: F:\eclipse-projects\Hello\dist
         [jar] Building jar: F:\eclipse-projects\Hello\dist\hello.jar


doc:
       [mkdir] Created dir: F:\eclipse-projects\Hello\doc
     [javadoc] Generating Javadoc
     [javadoc] Javadoc execution
     [javadoc] Loading source files for package example...
     [javadoc] Constructing Javadoc information...
     [javadoc] Standard Doclet version 1.4.2_04
     [javadoc] Building tree for all the packages and classes...
     [javadoc] Building index for all the packages and classes...
     [javadoc] Building index for all classes...
     [javadoc] Generating F:\eclipse-projects\Hello\doc\stylesheet.css...
     [javadoc] Note: Custom tags that could override future standard tags:  @todo. To avoid potential overrides, use at least one period character (.) in custom tag names.
     [javadoc] Note: Custom tags that were not seen:  @todo
BUILD SUCCESSFUL
Total time: 11 seconds


Ant依次执行初始化,编译,测试,打包,生成API文档一系列任务,极大地提高了开发效率。将来开发J2EE项目时,还可加入部署等任务。并且,即使脱离了Eclipse环境,只要正确安装了Ant,配置好环境变量ANT_HOME=<Ant解压目录>,Path=…;%ANT_HOME%\bin,在命令行提示符下切换到Hello目录,简单地键入ant即可。

Eclipse快速上手指南 (2)

| 1 Comment

4. 在Eclipse中使用JUnit


测试对于保证软件开发质量有着非常重要的作用,单元测试更是必不可少,JUnit是一个非常强大的单元测试包,可以对一个/多个类的单个/多个方法测试,还可以将不同的TestCase组合成TestSuit,使测试任务自动化。Eclipse同样集成了JUnit,可以非常方便地编写TestCase。

我们创建一个Java工程,添加一个example.Hello类,首先我们给Hello类添加一个abs()方法,作用是返回绝对值:


下一步,我们准备对这个方法进行测试,确保功能正常。选中Hello.java,右键点击,选择New->JUnit Test Case:


Eclipse会询问是否添加junit.jar包,确定后新建一个HelloTest类,用来测试Hello类。


选中setUp()和tearDown(),然后点击“Next”:


选择要测试的方法,我们选中abs(int)方法,完成后在HelloTest.java中输入:


JUnit会以以下顺序执行测试:(大致的代码



try {
    HelloTest test = new HelloTest(); // 建立测试类实例
    test.setUp(); // 初始化测试环境
    test.testAbs(); // 测试某个方法
    test.tearDown(); // 清理资源
}
catch…


setUp()是建立测试环境,这里创建一个Hello类的实例;tearDown()用于清理资源,如释放打开的文件等等。以test开头的方法被认为是测试方法,JUnit会依次执行testXxx()方法。在testAbs()方法中,我们对abs()的测试分别选择正数,负数和0,如果方法返回值与期待结果相同,则assertEquals不会产生异常。


如果有多个testXxx方法,JUnit会创建多个XxxTest实例,每次运行一个testXxx方法,setUp()和tearDown()会在testXxx前后被调用,因此,不要在一个testA()中依赖testB()。

直接运行Run->Run As->JUnit Test,就可以看到JUnit测试结果:


绿色表示测试通过,只要有1个测试未通过,就会显示红色并列出未通过测试的方法。可以试图改变abs()的代码,故意返回错误的结果(比如return n+1;),然后再运行JUnit就会报告错误。


如果没有JUnit面板,选择Window->Show View->Other,打开JUnit的View:


JUnit通过单元测试,能在开发阶段就找出许多Bug,并且,多个Test Case可以组合成Test Suite,让整个测试自动完成,尤其适合于XP方法。每增加一个小的新功能或者对代码进行了小的修改,就立刻运行一遍Test Suite,确保新增和修改的代码不会破坏原有的功能,大大增强软件的可维护性,避免代码逐渐“腐烂”。

Eclipse快速上手指南 (1)

Eclipse是一款非常优秀的开源IDE,非常适合Java开发,由于支持插件技术,受到了越来越多的开发者的欢迎。最新的Eclipse 3.0不但界面作了很大的增强,而且增加了代码折叠等众多优秀功能,速度也有明显的提升。配合众多令人眼花缭乱的插件,完全可以满足从企业级Java应用到手机终端Java游戏的开发。本文将带您手把手步入Eclipse的广阔天地,详细介绍在Eclipse下如何开发普通Java程序,Web应用,J2EE应用,手机Java程序,以及如何进行单元测试,重构,配置CVS等详细内容。


我的开发环境是JDK1.4.2+Eclipse3.0+Windows XP SP2,如果你在其他平台上遇到任何问题,欢迎来信交流。


1. 安装JDK1.4


Eclipse是一个基于Java平台的开发环境,它本身也要运行在Java虚拟机上,还要使用JDK的编译器,因此我们必须首先安装JDK。JDK1.4是目前最稳定的版本,同时也是Eclipse运行的必须条件。先从SUN的官方站点http://java.sun.com下载JDK1.4 Windows版,目前最新的是1.4.2_06,然后运行j2sdk-1_4_2_06-windows-i586-p.exe安装,你可以自行设定安装目录,我把它安装到D:\software\j2sdk1.4目录下。


接下来要配置环境变量,以便Java程序能找到已安装的JDK和其他配置信息。右键点击“我的电脑”,选择“属性”,在弹出的对话框中选择“高级”,“环境变量”,就可以看到环境变量对话框:


上面是用户变量,只对当前用户有效,下面是系统变量,对所有用户都有效。如果你希望所有用户都能使用,就在系统变量下点击“新建”,填入:


JAVA_HOME是JDK的安装目录,许多依赖JDK的开发环境都靠它来定位JDK,所以必须保证正确无误。


下一步,找到系统变量Path,点击“编辑”,在最后添上JDK的可执行文件的所在目录,即%JAVA_HOME%\bin,我的对应目录便是D:\software\j2sdk1.4\bin,附加到Path中即可,注意要以分号“;”隔开:


注意:如果系统安装了多个Java虚拟机(比如安装了Oracle 9i就有自带的JDK1.3),必须把JDK1.4的路径放在其他JVM的前面,否则Eclipse启动将报错。


最后一个系统变量是CLASSPATH,Java虚拟机会根据CLASSPATH的设定来搜索class文件所在目录,但这不是必需的,可以在运行Java程序时指定CLASSPATH,比如在Eclipse中运行写好的Java程序时,它会自动设定CLASSPATH,但是为了在控制台能方便地运行Java程序,我建议最好还是设置一个CLASSPATH,把它的值设为“.”,注意是一个点“.”代表当前目录。用惯了Windows的用户可能会以为Java虚拟机在搜索时会搜索当前目录,其实不会,这是UNIX中的习惯,出于安全考虑。许多初学Java的朋友兴匆匆地照着书上写好了Hello,world程序,一运行却弹出java.lang.NoClassDefFoundError,其实就是没有设置好CLASSPATH,只要添加一个当前目录“.”就可以了。


2. 安装Eclipse 3.0


配置好JDK后,下一步便是安装Eclipse 3.0,可以从Eclipse的官方站点http://www.eclipse.org上下载,你会看到如下版本:


● Eclipse SDK
● RCP Runtime Binary
● RCP SDK
● Platform Runtime Binary
● Platform SDK
● JDT Runtime Binary


Eclipse SDK包括了Eclipse开发环境,Java开发环境,Plug-in开发环境,所有源代码和文档,如果你需要所有的功能,可以下载这个版本。


如果你和我一样,只是用Eclipse开发Java应用,而不是开发Eclipse插件或者研究Eclipse代码,那么下载一个Platform Runtime Binary再加上JDT Runtime Binary是最好的选择。


下载eclipse-platform-3.0-win32.zip和eclipse-JDT-3.0.zip后,将它们解压到同一个目录,勿需安装,直接找到目录下的eclipse.exe运行,出现启动画面:


稍等片刻,Eclipse界面就出来了。


如果遇到错误,启动失败,可以检查Eclipse目录下的log文件,我曾经遇到过XmlParser异常,仔细检查发现原来Path中还有一个Oracle的Java1.3版本的虚拟机,将它从Path中去掉后Eclipse启动正常。


3. 第一个Java程序


运行Eclipse,选择菜单“File”,“New”,“Project”,新建一个Java Project,我把它命名为HelloWorld,然后新建一个Java Class:


我把它命名为HelloWorld,并且填上Package为example,钩上“public static void main(String[] args)”,点击“Finish”,Eclipse自动生成了代码框架,我们只需在main方法中填入:


默认设置下,Eclipse会自动在后台编译,我们只需保存,然后选择“Run”,“Run As”,“Java Application”,即可在Eclipse的控制台看到输出。


要调试Java程序也非常简单,Run菜单里包含了标准的调试命令,可以非常方便地在IDE环境下调试应用程序。


1.4版本支持:


选择菜单“Window”,“Preferences”,在对话框中找到“Java”,“Compiler”,“Compliance and Classfiles”,将编译选项改成1.4,就可以使用JDK1.4版的assert(断言)语法,使得测试更加方便:

Eclipse使用技巧

Eclipse使用技巧


1.在源代码中快速跳转


eclipse中的跳转甚至比VS.Net还方便,方法是按住Ctrl键,然后鼠标指向变量名,方法名,类名,就会出现链接,点击就可跳到定义处。


2.实时语法检查


编辑区右侧如果有红色小方块,直接点击就可跳到有错的行;黄色小方块是警告,可以忽略,但最好检查一下;如果某个函数尚未完成,要提醒自己注意怎么办?加上注释// TODO,右侧就会有蓝色小方块,提示你此处尚未完成。当一个源码的右侧没有任何提示时,说明这个文件已经完成了。


3.自动生成getter/setter方法


只需要申明protected,private类成员变量,然后在Package Explore中找到该类,右键点击,选择“Source”“Generate Getters and Setters”。


4.更改类名/变量名


如果涉及到多处修改,不要直接在源码中更改,在Package Explore中找到要改名的类或变量,右键点击,选择“Refactor”“Rename”,eclipse会自动搜索所有相关代码并替换,确保不会遗漏或改错。


:我用的版本是Eclipse 3.0

在Eclipse中使用JUnit进行单元测试

如何编写测试代码肯定是开发人员最头疼的。JUnit是一个非常强大的单元测试包,可以对一个/多个类的单个/多个方法测试,还可以将不同的TestCase组合成TestSuit,使测试任务自动化。


本文简单介绍如何在eclipse中使用JUnit创建一个TestCase来测试一个简单的类。


我们写一个要测试的类Simple如下:



package jexi.test;
public class Simple {
    private int n;
    public Simple(int n) {
        this.n = n;
    }
    // 返回绝对值:
    public int foo() {
        return n>0 ? n : (-n);
    }
}


foo()方法返回绝对值,下一步,我们准备用JUnit对这个foo()方法进行全面测试。


首先,在eclipse中,创建一个java工程,把plugins\org.junit_3.8.1\junit.jar包含进去:


然后写好Simple.java,为它创建一个JUnit Test Case:



在弹出的对话框中填入测试类的名字:SimpleTest,勾上setUp():



编写测试代码:



package jexi.test;
import junit.framework.TestCase;

public class SimpleTest extends TestCase {
    private Simple s1, s2;

    protected void setUp() throws Exception {
        super.setUp();
        s1 = new Simple(10);
        s2 = new Simple(-7);
    }

    public void testFoo() {
        assertTrue(s1.foo()==10);
        assertTrue(s2.foo()==7);
    }
}


其中setUp()方法是构造初始化环境,我们在setUp中创建两个Simple的实例,testFoo()是用来测试foo()的测试方法,总是以test+方法名构成,然后在测试方法中测试:s1.foo()==10,如果返回值与期待的结果10相等,assertTrue()就执行成功,我们现在可以运行Run->Run As...->JUnit Test,左侧会显示测试结果:



如果我们把Simple的foo()方法改成:


    public int foo() {
        return n;
    }


再次运行JUnit Test,现在assertTrue(s2.foo()==7);测试结果就不正确了,JUnit会报告哪一行结果不正确:



双击就可以快速定位到测试失败的方法调用上。


总结


JUnit功能非常强大,是代码质量的可靠保证。精心设计的TestCase可以反复使用,将来对某个类进行了更改,只需要运行一遍TestCase就知道改动对客户端有无影响。若干个TestCase还可以组合成TestSuit,结合Ant使得编译,测试,运行整个过程自动化,只需要查看测试结果就可以知道哪些代码出了问题。

About this Archive

This page is a archive of recent entries in the Eclipse category.

Designs is the previous category.

English Learning is the next category.

Find recent content on the main index or look in the archives to find all content.