Eclipse快速上手指南

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快速上手指南(2)

作者:asklxf

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快速上手指南(3)

作者:asklxf

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平台J2ME开发之整合

作者:蜡笔小刀

(早就答应mingjava介绍一下怎样在Eclipse平台下整合厂商sdk,无耐之几天碰上点小难题一时解决不好,心情郁闷。但郁闷不是办法啊,写点东西也算是排遣一下吧:)

使用Eclipse开发J2ME时,最好能将常用的一些厂商的模拟器都整合进去,比较方便。本文简要介绍一下如何将Nokia,索爱,三星的模拟器整合到Eclipse环境中。注意我使用的EclipseMe版本为0.4.3,新的版本可能会有点变化,希望我抛砖引玉,能有人补充更正。

厂商提供的开发包大概有三种形式:

一是提供一个厂商版本的WTK,比如索爱,这个WTK里面包含了SDK和模拟器,开发者直接使用这个WTK进行开发(根使用SUN提供的标准WTK一样);

二是提供和WTK配合使用的开发工具,如Nokia。你需要自己先行安装WTK,而Nokia开发工具安装的时候会让你选则WTK的路径。

三是提供一个独立的开发环境,但不是WTK的形式,如Moto。Moto的开发工具上有一个模拟器启动程序,有各种模拟器对应的sdk和编译的批处理文件。

这三种是我遇到过的,其他的没用过也不知道。对于索爱,Nokia这样依托于WTK的模拟器比较容易整合到Eclipse中,因为EclipseMe也是依托于WTK的。如果将这些厂商的模拟器整合到一个WTK里面,就可以在Eclipse中使用了。

1. Nokia 模拟器

Nokia的模拟器都是由安装程序安装的,其实找一个已经安装好的模拟器的整个文件夹直接拷到wtk的wtklib/devices文件夹中,就可以用了。废话两句,我常用的有7210,3300,S60beta0.1这些模拟器。其中7210支持中文,启动速度快,是40开发的首选。60的模拟器都比较慢,一般只有移植的时候用一下。

2. 索爱K700与三星SGH-S100,S200,C100模拟器

索爱和三星都是以WTK形式提供的开发包,模拟器文件夹在他们的WTK的devices中。将他们拷到你使用的WTK中吧。但是要改动一个地方,否则在Eclipse中就不能用了。以索爱K700为例,打开模拟器文件夹中的配置文件"SonyEricsson_K700.properties",搜索keyboard.handler = com.sun.kvem.midp.ConfigurableKeyboardHandler,将他用#注释调,改成keyboard.handler = com.sun.kvem.midp.DefaultKeyboardHandler,这样就可以在Eclipse中用了。但三星的这几个模拟器只能在WTK2.2下面用,如果不想换掉当前的WTK,你就得再安装一个WTK2.2,EclipseMe可以同时支持多个WTK,如果你建立工程的时候选择的是WTK2.2的配置就可以在run的模拟器选单中选择三星的模拟器了。但这样还是有问题,至少对我的这个版本的EclipseMe是这样,你需要打开project的属性窗口,将连接库中的内容全部删掉(原来应该是默认的WTk2.2的Lib)而手工添加你需要的lib,如cldc1.1,midp2.0,mmapi等。

3. Moto 模拟器

我现在还没办法将他们整合到Eclipse中。我发现Moto的模拟器不是WTK的标准格式,它的配置文件格式和WTK的模拟器不兼容。这个配置文件好像是Moto开发工具中的launch.exe读取用的。希望有哪位了解的能说明一下。

说明:本文所提主要是Nokia和Midp2.0的模拟器。Midp2.0的模拟器基本上只有一个配置文件和几张图片,而Nokia的模拟器里面还带有lib等。对于有厂商api的模拟器,情况可能并不相同。这个需要具体机型具体研究,不过Eclipse可以指定外部jar,也许这就是解决之道。


你可能感兴趣的:(eclipse)