Eclipse是一款非常優(yōu)秀的開(kāi)源IDE,非常適合Java開(kāi)發(fā),由于支持插件技術(shù),受到了越來(lái)越多的開(kāi)發(fā)者的歡迎。最新的Eclipse
3.0不但界面作了很大的增強(qiáng),而且增加了代碼折疊等眾多優(yōu)秀功能,速度也有明顯的提升。配合眾多令人眼花繚亂的插件,完全可以滿足從企業(yè)級(jí)Java應(yīng)用
到手機(jī)終端Java游戲的開(kāi)發(fā)。本文將帶您手把手步入Eclipse的廣闊天地,詳細(xì)介紹在Eclipse下如何開(kāi)發(fā)普通Java程序,Web應(yīng)用,
J2EE應(yīng)用,手機(jī)Java程序,以及如何進(jìn)行單元測(cè)試,重構(gòu),配置CVS等詳細(xì)內(nèi)容。
我的開(kāi)發(fā)環(huán)境是JDK1.4.2+Eclipse3.0+Windows XP SP2,如果你在其他平臺(tái)上遇到任何問(wèn)題,歡迎來(lái)信交流。
1. 安裝JDK1.4
Eclipse
是一個(gè)基于Java平臺(tái)的開(kāi)發(fā)環(huán)境,它本身也要運(yùn)行在Java虛擬機(jī)上,還要使用JDK的編譯器,因此我們必須首先安裝JDK。JDK1.4是目前最穩(wěn)定
的版本,同時(shí)也是Eclipse運(yùn)行的必須條件。先從SUN的官方站點(diǎn)http://java.sun.com下載JDK1.4
Windows版,目前最新的是1.4.2_06,然后運(yùn)行j2sdk-1_4_2_06-windows-i586-p.exe安裝,你可以自行設(shè)定安
裝目錄,我把它安裝到D:softwarej2sdk1.4目錄下。
接下來(lái)要配置環(huán)境變量,以便Java程序能找到已安裝的JDK和其他配置信息。右鍵點(diǎn)擊“我的電腦”,選擇“屬性”,在彈出的對(duì)話框中選擇“高級(jí)”,“環(huán)境變量”,就可以看到環(huán)境變量對(duì)話框:
上面是用戶(hù)變量,只對(duì)當(dāng)前用戶(hù)有效,下面是系統(tǒng)變量,對(duì)所有用戶(hù)都有效。如果你希望所有用戶(hù)都能使用,就在系統(tǒng)變量下點(diǎn)擊“新建”,填入:
JAVA_HOME是JDK的安裝目錄,許多依賴(lài)JDK的開(kāi)發(fā)環(huán)境都靠它來(lái)定位JDK,所以必須保證正確無(wú)誤。
下一步,找到系統(tǒng)變量Path,點(diǎn)擊“編輯”,在最后添上JDK的可執(zhí)行文件的所在目錄,即%JAVA_HOME%in,我的對(duì)應(yīng)目錄便是D:softwarej2sdk1.4in,附加到Path中即可,注意要以分號(hào)“;”隔開(kāi):
注意:如果系統(tǒng)安裝了多個(gè)Java虛擬機(jī)(比如安裝了Oracle 9i就有自帶的JDK1.3),必須把JDK1.4的路徑放在其他JVM的前面,否則Eclipse啟動(dòng)將報(bào)錯(cuò)。
最
后一個(gè)系統(tǒng)變量是CLASSPATH,Java虛擬機(jī)會(huì)根據(jù)CLASSPATH的設(shè)定來(lái)搜索class文件所在目錄,但這不是必需的,可以在運(yùn)行Java
程序時(shí)指定CLASSPATH,比如在Eclipse中運(yùn)行寫(xiě)好的Java程序時(shí),它會(huì)自動(dòng)設(shè)定CLASSPATH,但是為了在控制臺(tái)能方便地運(yùn)行
Java程序,我建議最好還是設(shè)置一個(gè)CLASSPATH,把它的值設(shè)為“.”,注意是一個(gè)點(diǎn)“.”代表當(dāng)前目錄。用慣了Windows的用戶(hù)可能會(huì)以為
Java虛擬機(jī)在搜索時(shí)會(huì)搜索當(dāng)前目錄,其實(shí)不會(huì),這是UNIX中的習(xí)慣,出于安全考慮。許多初學(xué)Java的朋友興匆匆地照著書(shū)上寫(xiě)好了Hello,
world程序,一運(yùn)行卻彈出java.lang.NoClassDefFoundError,其實(shí)就是沒(méi)有設(shè)置好CLASSPATH,只要添加一個(gè)當(dāng)前
目錄“.”就可以了。
2. 安裝Eclipse 3.0
配置好JDK后,下一步便是安裝Eclipse 3.0,可以從Eclipse的官方站點(diǎn)http://www.eclipse.org上下載,你會(huì)看到如下版本:
● Eclipse SDK
● RCP Runtime Binary
● RCP SDK
● Platform Runtime Binary
● Platform SDK
● JDT Runtime Binary
Eclipse SDK包括了Eclipse開(kāi)發(fā)環(huán)境,Java開(kāi)發(fā)環(huán)境,Plug-in開(kāi)發(fā)環(huán)境,所有源代碼和文檔,如果你需要所有的功能,可以下載這個(gè)版本。
如果你和我一樣,只是用Eclipse開(kāi)發(fā)Java應(yīng)用,而不是開(kāi)發(fā)Eclipse插件或者研究Eclipse代碼,那么下載一個(gè)Platform Runtime Binary再加上JDT Runtime Binary是最好的選擇。
下載eclipse-platform-3.0-win32.zip和eclipse-JDT-3.0.zip后,將它們解壓到同一個(gè)目錄,勿需安裝,直接找到目錄下的eclipse.exe運(yùn)行,出現(xiàn)啟動(dòng)畫(huà)面:
稍等片刻,Eclipse界面就出來(lái)了。
如果遇到錯(cuò)誤,啟動(dòng)失敗,可以檢查Eclipse目錄下的log文件,我曾經(jīng)遇到過(guò)XmlParser異常,仔細(xì)檢查發(fā)現(xiàn)原來(lái)Path中還有一個(gè)Oracle的Java1.3版本的虛擬機(jī),將它從Path中去掉后Eclipse啟動(dòng)正常。
3. 第一個(gè)Java程序
運(yùn)行Eclipse,選擇菜單“File”,“New”,“Project”,新建一個(gè)Java Project,我把它命名為HelloWorld,然后新建一個(gè)Java Class:
我把它命名為HelloWorld,并且填上Package為example,鉤上“public static void main(String[] args)”,點(diǎn)擊“Finish”,Eclipse自動(dòng)生成了代碼框架,我們只需在main方法中填入:
默認(rèn)設(shè)置下,Eclipse會(huì)自動(dòng)在后臺(tái)編譯,我們只需保存,然后選擇“Run”,“Run As”,“Java Application”,即可在Eclipse的控制臺(tái)看到輸出。
要調(diào)試Java程序也非常簡(jiǎn)單,Run菜單里包含了標(biāo)準(zhǔn)的調(diào)試命令,可以非常方便地在IDE環(huán)境下調(diào)試應(yīng)用程序。
1.4版本支持:
選擇菜單“Window”,“Preferences”,在對(duì)話框中找到“Java”,“Compiler”,“Compliance and Classfiles”,將編譯選項(xiàng)改成1.4,就可以使用JDK1.4版的assert(斷言)語(yǔ)法,使得測(cè)試更加方便:
4. 在Eclipse中使用JUnit
測(cè)
試對(duì)于保證軟件開(kāi)發(fā)質(zhì)量有著非常重要的作用,單元測(cè)試更是必不可少,JUnit是一個(gè)非常強(qiáng)大的單元測(cè)試包,可以對(duì)一個(gè)/多個(gè)類(lèi)的單個(gè)/多個(gè)方法測(cè)試,還
可以將不同的TestCase組合成TestSuit,使測(cè)試任務(wù)自動(dòng)化。Eclipse同樣集成了JUnit,可以非常方便地編寫(xiě)TestCase。
我們創(chuàng)建一個(gè)Java工程,添加一個(gè)example.Hello類(lèi),首先我們給Hello類(lèi)添加一個(gè)abs()方法,作用是返回絕對(duì)值:
下一步,我們準(zhǔn)備對(duì)這個(gè)方法進(jìn)行測(cè)試,確保功能正常。選中Hello.java,右鍵點(diǎn)擊,選擇New->JUnit Test Case:
Eclipse會(huì)詢(xún)問(wèn)是否添加junit.jar包,確定后新建一個(gè)HelloTest類(lèi),用來(lái)測(cè)試Hello類(lèi)。
選中setUp()和tearDown(),然后點(diǎn)擊“Next”:
選擇要測(cè)試的方法,我們選中abs(int)方法,完成后在HelloTest.java中輸入:
JUnit會(huì)以以下順序執(zhí)行測(cè)試:(大致的代碼)
try {
HelloTest test = new HelloTest(); // 建立測(cè)試類(lèi)實(shí)例
test.setUp(); // 初始化測(cè)試環(huán)境
test.testAbs(); // 測(cè)試某個(gè)方法
test.tearDown(); // 清理資源
}
catch…
setUp
()是建立測(cè)試環(huán)境,這里創(chuàng)建一個(gè)Hello類(lèi)的實(shí)例;tearDown()用于清理資源,如釋放打開(kāi)的文件等等。以test開(kāi)頭的方法被認(rèn)為是測(cè)試方
法,JUnit會(huì)依次執(zhí)行testXxx()方法。在testAbs()方法中,我們對(duì)abs()的測(cè)試分別選擇正數(shù),負(fù)數(shù)和0,如果方法返回值與期待結(jié)
果相同,則assertEquals不會(huì)產(chǎn)生異常。
如果有多個(gè)testXxx方法,JUnit會(huì)創(chuàng)建多個(gè)XxxTest實(shí)例,每次運(yùn)行一個(gè)testXxx方法,setUp()和tearDown()會(huì)在testXxx前后被調(diào)用,因此,不要在一個(gè)testA()中依賴(lài)testB()。
直接運(yùn)行Run->Run As->JUnit Test,就可以看到JUnit測(cè)試結(jié)果:
綠色表示測(cè)試通過(guò),只要有1個(gè)測(cè)試未通過(guò),就會(huì)顯示紅色并列出未通過(guò)測(cè)試的方法。可以試圖改變abs()的代碼,故意返回錯(cuò)誤的結(jié)果(比如return n+1;),然后再運(yùn)行JUnit就會(huì)報(bào)告錯(cuò)誤。
如果沒(méi)有JUnit面板,選擇Window->Show View->Other,打開(kāi)JUnit的View:
JUnit
通過(guò)單元測(cè)試,能在開(kāi)發(fā)階段就找出許多Bug,并且,多個(gè)Test Case可以組合成Test
Suite,讓整個(gè)測(cè)試自動(dòng)完成,尤其適合于XP方法。每增加一個(gè)小的新功能或者對(duì)代碼進(jìn)行了小的修改,就立刻運(yùn)行一遍T(mén)est
Suite,確保新增和修改的代碼不會(huì)破壞原有的功能,大大增強(qiáng)軟件的可維護(hù)性,避免代碼逐漸“腐爛”。
5. 在Eclipse中使用Ant
Ant是Java平臺(tái)下非常棒的批處理命令執(zhí)行程序,能非常方便地自動(dòng)完成編譯,測(cè)試,打包,部署等等一系列任務(wù),大大提高開(kāi)發(fā)效率。如果你現(xiàn)在還沒(méi)有開(kāi)始使用Ant,那就要趕快開(kāi)始學(xué)習(xí)使用,使自己的開(kāi)發(fā)水平上一個(gè)新臺(tái)階。
Eclipse中已經(jīng)集成了Ant,我們可以直接在Eclipse中運(yùn)行Ant。
以前面建立的Hello工程為例,創(chuàng)建以下目錄結(jié)構(gòu):
新建一個(gè)build.xml,放在工程根目錄下。build.xml定義了Ant要執(zhí)行的批處理命令。雖然Ant也可以使用其它文件名,但是遵循標(biāo)準(zhǔn)能更使開(kāi)發(fā)更規(guī)范,同時(shí)易于與別人交流。
通常,src存放Java源文件,classes存放編譯后的class文件,lib存放編譯和運(yùn)行用到的所有jar文件,web存放JSP等web文件,dist存放打包后的jar文件,doc存放API文檔。
然后在根目錄下創(chuàng)建build.xml文件,輸入以下內(nèi)容:
<?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>
<!-- 初始化任務(wù) -->
<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>
<!-- 測(cè)試 -->
<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>
以上x(chóng)ml依次定義了init(初始化),compile(編譯),test(測(cè)試),doc(生成文檔),pack(打包)任務(wù),可以作為模板。
選中Hello工程,然后選擇“Project”,“Properties”,“Builders”,“New…”,選擇“Ant Build”:
填
入Name:Ant_Builder;Buildfile:build.xml;Base
Directory:${workspace_loc:/Hello}(按“Browse
Workspace”選擇工程根目錄),由于用到了junit.jar包,搜索Eclipse目錄,找到j(luò)unit.jar,把它復(fù)制到
Hello/lib目錄下,并添加到Ant的Classpath中:
然后在Builder面板中鉤上Ant_Build,去掉Java Builder:
再次編譯,即可在控制臺(tái)看到Ant的輸出:
Buildfile: F:eclipse-projectsHellouild.xml
init:
compile:
[mkdir] Created dir: F:eclipse-projectsHelloclasses
[javac] Compiling 2 source files to F:eclipse-projectsHelloclasses
test:
[mkdir] Created dir: F:eclipse-projectsHello eport
[junit] Running example.HelloTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.02 sec
pack:
[mkdir] Created dir: F:eclipse-projectsHellodist
[jar] Building jar: F:eclipse-projectsHellodisthello.jar
doc:
[mkdir] Created dir: F:eclipse-projectsHellodoc
[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-projectsHellodocstylesheet.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
依次執(zhí)行初始化,編譯,測(cè)試,打包,生成API文檔一系列任務(wù),極大地提高了開(kāi)發(fā)效率。將來(lái)開(kāi)發(fā)J2EE項(xiàng)目時(shí),還可加入部署等任務(wù)。并且,即使脫離了
Eclipse環(huán)境,只要正確安裝了Ant,配置好環(huán)境變量ANT_HOME=<Ant解壓目錄>,Path=…;%ANT_HOME%
in,在命令行提示符下切換到Hello目錄,簡(jiǎn)單地鍵入ant即可。
posted on 2006-05-22 18:12
wqwqwqwqwq 閱讀(2966)
評(píng)論(3) 編輯 收藏