Java開(kāi)發(fā)和運(yùn)行環(huán)境的搭建-重要_第1頁(yè)
Java開(kāi)發(fā)和運(yùn)行環(huán)境的搭建-重要_第2頁(yè)
Java開(kāi)發(fā)和運(yùn)行環(huán)境的搭建-重要_第3頁(yè)
Java開(kāi)發(fā)和運(yùn)行環(huán)境的搭建-重要_第4頁(yè)
Java開(kāi)發(fā)和運(yùn)行環(huán)境的搭建-重要_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java開(kāi)發(fā)和運(yùn)行環(huán)境的搭建JDK是JavaDevelopmentKit的縮寫(xiě),即Java開(kāi)發(fā)工具集。JDK是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境(JRE)、Java開(kāi)發(fā)工具和Java基礎(chǔ)類(lèi)庫(kù)。JRE是JavaRuntimeEnvironment的縮寫(xiě),即Java運(yùn)行時(shí)環(huán)境。Java程序運(yùn)行時(shí)必需要JRE的支持。Java的平臺(tái)版本:Java分為J2SE、J2EE和J2ME三個(gè)不同的平臺(tái)版本,即標(biāo)準(zhǔn)版(Java2Platform,StandardEdition)、企業(yè)版(Java2Platform,EnterpriseEdition)和微型版(Java2Platform,MicroEdition)oAJava1.5(或者Java5.0)開(kāi)始,它們被改稱(chēng)為JavaSE、JavaEE和JavaME。各平臺(tái)版本之間的差別在于適用范圍不同:標(biāo)準(zhǔn)版平臺(tái)(JavaSE)允許開(kāi)發(fā)和部署在桌面、服務(wù)器、嵌入式和實(shí)時(shí)環(huán)境中使用的Java應(yīng)用程序。另外,JavaSE包含了支持實(shí)現(xiàn)JavaWeb服務(wù)的類(lèi)庫(kù),因此標(biāo)準(zhǔn)版是企業(yè)版的基礎(chǔ)。企業(yè)版平臺(tái)(JavaEE)幫助開(kāi)發(fā)者開(kāi)發(fā)和部署JavaWeb應(yīng)用。企業(yè)版提供Web服務(wù)、組件模型、管理和通信API,可以用來(lái)實(shí)現(xiàn)企業(yè)級(jí)的面向服務(wù)的體系結(jié)構(gòu)(Service-OrientedArchitecture,SOA)和Web2.0應(yīng)用程序。而微型版平臺(tái)(JavaME)主要用于移動(dòng)設(shè)備和嵌入式設(shè)備,如手機(jī)、PDA、電視機(jī)頂盒等等。微型版包括靈活的用戶(hù)界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議、以及對(duì)可動(dòng)態(tài)下載的在線和離線應(yīng)用的支持。基于JavaME規(guī)范的應(yīng)用程序與普通Java程序一樣,只需編譯一次,即可在許多設(shè)備上運(yùn)行。Java的版本:1995年5月23日,Java語(yǔ)言誕生1996年1月,JDK1.0發(fā)布1997年2月18日,JDK1.1發(fā)布1998年12月4日,J2SE1.2發(fā)布,1.2版及其之后的版本也被稱(chēng)為Java21998年12月8日,Java2企業(yè)版發(fā)布2000年5月8日,J2SE1.3發(fā)布

2002年2月13日,J2SE1.4發(fā)布2004年9月30日,J2SE1.5發(fā)布,J2SE1.5版也被稱(chēng)為Java5.02006年12月,Java6.0發(fā)布2010年9月,Java7.0發(fā)布Java開(kāi)發(fā)與運(yùn)行環(huán)境的搭建(JavaSE):.下載JDK/JRE:首先,訪問(wèn)Oracle公司的JavaSE的下載主頁(yè)(http:〃/technetwork/java/javase/downloads/index.html),選擇一個(gè)版本(目前最新版為JavaSE7),如下圖:初即EJm日口日的1地電9Mff*-初即EJm日口日的1地電9Mff*-L5J-3vi量Tu舊HR;:lorFREE!fr口eMwp對(duì)T「9nrig|FOacums-nlalJ-jnJavaPlarrnfm,standardEdlibcinJava8后7間目第gInciMgwdswt,熊much的smiilanguageMsn酬9toilm的小收d郎erWhduetM依占爬用fib&e吟情尚即1.&uwortlara^ynctronouBW.8前 frsrmflartlormunwreperrarrvsflis.Imprth^s-ijppwlfrxirilBm甌帕l因lion訓(xùn)。時(shí)千口用切漸血ar^mucliirons.LtajTHwe*,WhflsJavaa?1Mead?"強(qiáng)urnusdhar甫ai?p/對(duì)IlieJREQRunlimeErevteoemrirlbangwraj'sten1&runJar^aappllc^fcn9anda彩>婕.而devil明」國(guó)中^ M4Ppi叨5:rounqTmeiJar^Dmlopranl府1).H?ch 的BiaJRE.-JDK.JRE1口*^1。生碗吊碗JDK『me匚InWnllrtonIh-rudun!;Rsnue一配牙時(shí)巾>?■」JVJ主ThirdFjrtfLienkw匚 ■方忤rn匚11mljLimhiiiiuJRETDocsp山「il閭irmlH!;tnjdwrKrR嗔口口睛Qp>哦版心”1皿1::云-meteLmnsEM」;MSHFrEudspTHEFarlyLlHFliigGorrhqu「麗naJaw?£E< iTThsfeIeaseincludes-perforniaj>osimpiffli'emerts=Eua加,將and皿小小七1Fir^to3Le口「nirihEfJBKJREiDonotenii曼DmnlDadl*所9幅11洞出口InninJdlnnflJ準(zhǔn)。gts■Inlml閭ioninstni闔nn:*MewLcJill?呈Slud#nl此頁(yè)面包含多個(gè)版本的JDK、JRE、幫助文檔、源代碼等下載內(nèi)容的鏈接。如果不是Java程序的開(kāi)發(fā)者,僅僅想在自己的系統(tǒng)中運(yùn)行Java程序,那么只需要一個(gè)JRE就可以了;如果想使用Java開(kāi)發(fā)自己的應(yīng)用程序,則需要下載JDK,其中已包含JRE,因此下載了JDK后無(wú)需再單獨(dú)下載JRE。這里以下載JavaSE7的JDK為例,點(diǎn)擊相應(yīng)的Download按鈕,轉(zhuǎn)到下載頁(yè)面:JavaSEDevelopmentKit7DownloadsThankyoufordownloadingthisreleaseoftheJava?Platform.StandardEditionDevelopmentKitTheJDKisadevelopmentenvironmentfcrbuildingapplication丸applets,andcomponentsusingtheJavaprogramminglanguage.TheJDKincludestoolsusefulfordevelopingandtestingprogramswrittenintheJavaprogramminglanguageand「unningontheJava?platrorm.JavaSEDevelopmentKit7Youmustacceptth停O「acisBinaryCod事LisnieAg「xmrrit》◎「Jly3占Etodownloadthissoftware.AcceptLihcenseAgreement9DeclineLicenseAgreementProduct/FileD&scriptionFileSi酹DownloadLinuKK86-RPMInstaller77.28陽(yáng)士jdK-7Tinu*-i&06.「pmLinuxk86-CompressedBinary921『陽(yáng)曼jdk-7-linLx-i&86.tar.gzLinuxX64--RPMInstaller77.91MB*jdk-7-linLx-j(64,rpmLinuxk64--CompressedBinary90.57MB量jdl<-'7-linLix-x54.tair.gz:SolarissSB-Comp-ressedPackages1&4.74MB?jdk-7-solaris-i5S6,tar.ZSolarisxSB-Comp-ressedBinary94.75MB*jdk-7-solaris-i586.tar.gzSolarisS-PARC-CompressedPackages157.31MB*jdk-7-soIaris-sparc.tar.ZSolaris&PARG-CompressedBinary99.+8陽(yáng)士jdk-7-soIari3-sparc.tar.gzSolaris&PARG64-bit-CompressedPackages16.28MB*jdk-7-solaris-sparcvS.tar.ZSolarisSPARC64-bit-CompressedBinary12.33MB*jdk-7-soIaris-sparcv9.tar.gzSolarisnEA-Comp-ressedPackages14.88MB?jdk-7-soIaris-k64.tar.ZSclaris?64-Comp-reEsedBinary9.3-9MB?jdk-7-solaris-K64.tar.gzWindowsx8679.48MB*jdk-7-windlows-i6,exeWindowsm6430.25MB*jdk-7-windloW5-X64,exe在此頁(yè)面中,包含了對(duì)應(yīng)各種操作系統(tǒng)的JDK下載鏈接,選擇自己系統(tǒng)對(duì)應(yīng)的JDK,將其下載到本地硬盤(pán)上。注意,在下載之前需要先閱讀"OracleBinaryCodeLicenseAgreementforJavaSE”,必須接受其中的條款才能下載JDK(選中“AcceptLicenseAgreement”)o.安裝JDK/JRE:無(wú)論是在Windows還是在Linux下安裝JDK都很簡(jiǎn)單,與安裝其他程序沒(méi)什么不同。(因?yàn)槲覜](méi)有其他操作系統(tǒng)的環(huán)境,也沒(méi)用過(guò)其他系統(tǒng),因此不清楚在其他操作系統(tǒng)下的安裝方法,但想

來(lái)應(yīng)該也不是難事——至少不會(huì)比安裝其他程序難)。在Windows中,雙擊剛才下載的“jdk-7-windows-i586.exe”文件,就會(huì)打開(kāi)安裝界面。點(diǎn)擊“下一步”按鈕,可以在此選擇需要安裝的組件和安裝目錄,窗口右側(cè)是對(duì)所選組件的說(shuō)明,包括組件功能和所需的磁盤(pán)空間;可以點(diǎn)擊“更改”按鈕來(lái)改變安裝目錄。點(diǎn)擊“下一步”即開(kāi)始正式安裝。安裝完畢后,將會(huì)顯示安裝已完成的信息,點(diǎn)擊“完成”按鈕即可完成安裝。來(lái)到安裝文件夾下,即可以看到已安裝的JDK的目錄結(jié)構(gòu)。(注意其中包含名為“jre”的文件夾,這就是前面說(shuō)的JDK包含JRE的原因所在)整個(gè)安裝過(guò)程如下面幾幅圖所示:

產(chǎn)品注任是免醺!J,?湍庭提始下塔.百超否?:常迸阪聿雄補(bǔ)程后和再丁噸誦碰閡■團(tuán)裝潢有關(guān)口冶供開(kāi)苴當(dāng)產(chǎn)品,膈要扣晅叫吃?xún)?yōu)羲產(chǎn)品注任是免醺!J,?湍庭提始下塔.百超否?:常迸阪聿雄補(bǔ)程后和再丁噸誦碰閡■團(tuán)裝潢有關(guān)口冶供開(kāi)苴當(dāng)產(chǎn)品,膈要扣晅叫吃?xún)?yōu)羲K裳將對(duì)早期筋哀和文捆5訪問(wèn)松鼠聲品在T信息但 ]俱Jn“{TMSEDevfllopmentKit7-完蒞JavafTH)父DvvefcipnirnitKit?已成中賈裝鶉舒懿黜簿淑鏘息’吟■示冰產(chǎn)朝僻.如堿育關(guān)好折收“毗推以羽儂j!妊腫學(xué)蛔曳用方』笆更多請(qǐng)回,食見(jiàn)了品注咫陸縣賀函口ORACLE為anFikt以蛙:i+J削仁卜洶kiJ力*名更ffS=IW啪X小口“bin如心:短京忖共db2厚口陽(yáng)?日13:28文辯實(shí)dm1312B文西笨irclidr2Ml趣M1312&Sets3Wainy即續(xù)13^0加枝i.lib2&t1/S?261凱費(fèi)立佳要2Gli腳揖13;23交ri矣「COFfRJGHl2tH M足。文件4kej\UCEJN^E2011/4/^1J;ZB其小1KBj1REAOME.hbni13:23命dmDwyrn*n'l建MBrfrgKtef.hfiml2&1y£;261仝兆R(shí)refoiDcsct/nwrt16KgregirteFj.S'.hSrJ201W2613:30FT㈤cotDocurw^rt6KENIHi冏凋】至那用*4DfitLjrTUwrl?KB?rcScux-a&LVS/QE1J:28文件1KB■S'Erc-zipI,V =… .…j2Q1J/5.3"訓(xùn)9WinRARZPES..2H3O1KBrHIRD?AH.n'iJiZb-r4SEF£ADME.ixi201S/B./ZC13:23本若s|17JKE注意:操作系統(tǒng)分為32位操作系統(tǒng)和64位操作系統(tǒng),對(duì)應(yīng)地,JDK也分為32位版和64位版(名稱(chēng)中帶有“i586”或“x86”的為32位版,帶有“x64”則表示該JDK為64位版)。64位版JDK只能安裝在64位操作系統(tǒng)上,32位版JDK則既可以安裝在32位操作系統(tǒng)上,也可以安裝在64位操作系統(tǒng)上。原因是64位的操作系統(tǒng)能夠兼容32位的應(yīng)用程序。換句話說(shuō),即使CPU是64位的,但如果安裝的操作系統(tǒng)是32位的,那么也無(wú)法安裝64位版的JDK。在Linux中安裝JDK與安裝其他程序相同。下載時(shí)可以選擇.rpm或tar.gz格式的安裝文件,這里以后者為例進(jìn)行說(shuō)明。首先解壓縮下載的文件,輸入命令"tar-xfjdk-7-linux-i586.tar.gz-C/usr”,將文件解壓到/usr目錄下,這樣就完成了安裝(如圖):qi iaonk-desktop:"/Downloads51sjdk-7-1inu.x-1586.tar.gwq;iaonkliq;iaomk-desktop:"/DownloadsStar*-xfjdk-7-1inux-i586.tar.gz-C/usrq;iaonkl?q;iaonk-desktop:"/DownloadsS /usrqia0仙kQqiaonk-desktop:/usrS1看bing'amesincludejdkl.7.0 1iblocalsbinsharesrcq;iia.onk-desktop:/usr$cdjdkl.?.0/qi2口mkMia.omk-desktop:/usr/jdkl.?.0$Isbin demo lib README.htm1 src.aipCOPYRIGHT include LICENSE release THIRDPARTYLICEHSEEEADHE.txtd.b jre man sanpleqi2口mk值qia.onk-desktop:/usr/jdkl.?.0$.設(shè)置環(huán)境變量:環(huán)境變量是指在操作系統(tǒng)中用來(lái)指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù),比如臨時(shí)文件夾位置和系統(tǒng)文件夾位置等。環(huán)境變量相當(dāng)于給系統(tǒng)或應(yīng)用程序設(shè)置的一些參數(shù)。編譯或運(yùn)行Java程序時(shí),都是基于命令行的,因此在此之前必須設(shè)置一些環(huán)境變量的值。有些JavaIDE(集成開(kāi)發(fā)環(huán)境)內(nèi)置了JDK,因此使用這些IDE時(shí)可以不指定環(huán)境變量。還有些程序需要個(gè)性化的環(huán)境變量(如ApacheTomcat需要JAVA_HOME環(huán)境變量)。與JDK或JRE的使用有關(guān)的是PATH、CLASSPATH等幾個(gè)環(huán)境變量。這里先解釋一下這些變量的含義:PATH變量用來(lái)告訴操作系統(tǒng)到哪里去查找一個(gè)命令。如果清空PATH變量的值,在Windows中運(yùn)行一個(gè)外部命令時(shí),將提示未知命令錯(cuò)誤(當(dāng)然,在Linux中也是一樣):注意:在Windows中,如“dir”、“cd”等命令是內(nèi)部命令,類(lèi)似于DOS中的常駐命令。這些命令在命令行窗口啟動(dòng)時(shí)會(huì)自動(dòng)加載到內(nèi)存中,不需要到磁盤(pán)上去尋找對(duì)應(yīng)的可執(zhí)行文件,因此即使清空了PATH變量的值也不會(huì)影響這些命令的使用。然而,像“java”這樣的外部命令,在執(zhí)行時(shí)必須先由操作系統(tǒng)到指定的目錄找到對(duì)應(yīng)的可執(zhí)行程序,然后才能加載并運(yùn)行。到哪里去尋找這些程序就是依靠PATH變量來(lái)指定的。Linux也是類(lèi)似,甚至可以說(shuō)在Linux中,PATH環(huán)境變量更為重要,因?yàn)長(zhǎng)inux的很多基本命令都屬于外部命令,如“回、"mkdir”等。當(dāng)將PATH變量清空后,這些命令都將無(wú)法使用(當(dāng)然,還是有一些內(nèi)部命令我們?nèi)匀豢梢允褂茫LASSPATH是編譯或運(yùn)行Java程序時(shí)用來(lái)告訴Java編譯器或虛擬機(jī)到哪里查找Java類(lèi)文件的,后面會(huì)對(duì)其做詳細(xì)介紹。

在WindowsXP或之前的版本中,依次點(diǎn)擊“右鍵我的電腦”->“屬性”->“高級(jí)”->“環(huán)境變量”;在WindowsVista和Windows7中則依次點(diǎn)擊“右鍵我的電腦”->“屬性”->“高級(jí)系統(tǒng)設(shè)置”->“高級(jí)”->“環(huán)境變量”,打開(kāi)環(huán)境變量設(shè)置窗口:新建一個(gè)用戶(hù)變量,名稱(chēng)為PATH,值為"C:\ProgramFiles(x86)\Java\jdk1.7.0\bin”(還記得前面JDK安裝到哪個(gè)目錄嗎?),點(diǎn)擊“確定”按鈕。然后用同樣的方法新建一個(gè)CLASSPATH變量,暫時(shí)將值設(shè)置為“.”(英文句號(hào))。為什么說(shuō)CLASSPATH的值是暫時(shí)的,后面會(huì)解釋。設(shè)置完成后,環(huán)境變量設(shè)置窗口如下圖所示。點(diǎn)擊確定按鈕,環(huán)境變量設(shè)置完成。注意:在Windows中,環(huán)境變量分為“用戶(hù)變量”和“系統(tǒng)變量”,它們的區(qū)別是,“用戶(hù)變量”只對(duì)當(dāng)前的用戶(hù)起作用,而“系統(tǒng)變量”則對(duì)系統(tǒng)中的所有用戶(hù)起作用。如果希望在多個(gè)用戶(hù)之間共享環(huán)境變量的設(shè)置,可以將這些環(huán)境變量設(shè)置為系統(tǒng)變量,否則,應(yīng)該使用用戶(hù)變量,避免影響其他用戶(hù)。在Linux中也有類(lèi)似的概念,接下來(lái)會(huì)講到。在Linux中,可以通過(guò)編輯“?/.bashrc”文件來(lái)修改環(huán)境變量。在最后添加下面幾行腳本,然后保存并退出:JAVA_HOME=/usr/jdk1.7.0JAVA_BIN=/usr/jdk1.7.0/binPATH=$PATH:$JAVA_HOME/binCLASSPATH=.exportJAVA_HOMEJAVA_BINPATHCLASSPATHEiaomkeqia.omk-desktop:~Stail.bashrcsources/etc/bash.bashrc3.if[-f/etc/ba£h_completion] !sliopt-叫posix;then./etc/ba£h_comp1etionFiJAUA_H0ME=/usp/jdkl.7.0JAUA_BIN=/u^/jdkl.7.0/binPATH=$PATH:$JAUA_HOnE/bin2LASSPATH=.exportJAUA_HOHE PATHCLASSPATH注意:Linux中,每個(gè)用戶(hù)的home目錄下都有.bashrc文件,這個(gè)文件用來(lái)保存用戶(hù)的個(gè)性化設(shè)置,如命令別名、路徑等,當(dāng)然也可以用來(lái)定義環(huán)境變量。此文件是與每個(gè)用戶(hù)相關(guān)的,一個(gè)用戶(hù)的設(shè)置不會(huì)影響到其他用戶(hù),在這里設(shè)置環(huán)境變量相當(dāng)于前面講的Windows的用戶(hù)環(huán)境變量。Linux中全局設(shè)置通常保存在"/etc/profile"文件中。另外,Linux中PATH和CLASSPATH的分割符都是“:"(冒號(hào)),而Windows中是“;”(分號(hào))。當(dāng)環(huán)境變量設(shè)置完成后,在Windows中打開(kāi)新的命令行窗口,在Linux中使用"source?/.bashrc"命令重新加載.bashrc文件,即可使新的環(huán)境變量生效。輸X'java-version”命令,應(yīng)該會(huì)打印出類(lèi)似下面兩幅圖所示的內(nèi)容:Windows命令行的輸出:對(duì)以上步驟補(bǔ)充說(shuō)明幾點(diǎn):.可以在Windows命令行或LinuxShell中使用命令設(shè)置環(huán)境變量。例如,在Windows中可以使用"setvar_name=somevalue",在Linux中使用“var_name=somevalue”,這種方式與上面介紹的方式的區(qū)別在于:這種方式的設(shè)置是臨時(shí)性的,當(dāng)重新啟動(dòng)一個(gè)新的命令行窗口(Windows)或重新登錄(Linux)后,這些臨時(shí)變量就會(huì)丟失。.JDK版本混亂:有時(shí)候,使用"java-version”命令可以打印出JDK的版本信息,但卻與我們剛剛安裝的JDK版本不一致。比如我們明明安裝的是JDK7,但卻打印出JDK6的版本信息,如下圖所示:C:Misers-uersionJavauersion,P1_6_0_25'pJauaCIM>£ERuntimeEnuiponmenttbuild1_6_0_25-h06^JavaHotSpot<TM>ClientUM<build20.0-bll,mixedmode,檢查PATH變量,發(fā)現(xiàn)其中有一個(gè)路徑為"C:\ProgramFiles(x86)\Java\jdk1.6.0_25\bin”,原來(lái)我的系統(tǒng)中安裝了兩個(gè)版本的JDK,JDK6和JDK7。由于此JDK6在系統(tǒng)環(huán)境變量PATH中,而Windows查找命令對(duì)應(yīng)的程序時(shí),首先查找的是系統(tǒng)變量,當(dāng)找到了一個(gè)可用的java程序時(shí),Windows將運(yùn)行這個(gè)程序,而不再進(jìn)一步查找。也就是說(shuō),系統(tǒng)PATH環(huán)境變量屏蔽了用戶(hù)PATH環(huán)境變量。不光如此,靠近PATH變量前部的路徑中的程序?qū)⑵帘纹渲蟮穆窂街械耐绦?。如同樣是在系統(tǒng)PATH變量中,“C:\ProgramFiles(x86)\Java\jdk1.6.0_25\bin;C:\ProgramFiles(x86)\Java\jdk1.7.0\bin",那么JDK6仍然將屏蔽JDK7,如果將它們的順序交換:“C:\ProgramFiles(x86)\Java\jdk1.7.0\bin;C:\ProgramFiles(x86)\Java\jdk1.6.0_25\bin",結(jié)果則相反。不只是用戶(hù)安裝了多個(gè)版本的JDK時(shí)可能導(dǎo)致JDK版本的混亂,而且很多軟件產(chǎn)品自身會(huì)包含JDK,即使用戶(hù)只安裝了一個(gè)JDK,但仍有可能與這些軟件中的JDK互相屏蔽(如果這些軟件同時(shí)也設(shè)置了環(huán)境變量的話)。例如Oracle數(shù)據(jù)庫(kù)、MyEclipse等都包含自己的JDK。在Windows下我還遇到過(guò)一個(gè)問(wèn)題,那就是居然在Windows\system32目錄下發(fā)現(xiàn)了java.exe、javaw.exe、javaws.exe三個(gè)文件,因?yàn)橄到y(tǒng)PATH變量中此目錄處于較靠前的位置,因此很容易將用戶(hù)自己安裝的JDK屏蔽掉。有三種方法來(lái)解決這個(gè)問(wèn)題:第一種方法是使用絕對(duì)路徑,例如我們運(yùn)行命令時(shí)使用“"C:\ProgramFiles(x86)\Java\jdk1.7.0\bin\java.exe"”(當(dāng)然,.exe可以省略)而不是"java"。使用絕對(duì)路徑時(shí),操作系統(tǒng)會(huì)直接根據(jù)路徑定位到命令所在的目錄,不再通過(guò)PATH變量來(lái)查找。這種方法的優(yōu)點(diǎn)是絕對(duì)不會(huì)導(dǎo)致命令的覆蓋,但缺點(diǎn)也很明顯:必須輸入完整的路徑來(lái)運(yùn)行命令(通常也很長(zhǎng))。需要注意的是,當(dāng)絕對(duì)路徑中存在空格時(shí)(如上面的例子那樣),需要將命令用英文雙引號(hào)引起來(lái)。在設(shè)置PATH變量時(shí)不需要這樣做,操作系統(tǒng)會(huì)自動(dòng)完成這件事。第二種方法是將自己安裝的JDK路徑設(shè)置到系統(tǒng)PATH變量的開(kāi)頭,這樣,操作系統(tǒng)查找命令時(shí)就會(huì)最先查找我們?cè)O(shè)置的路徑。但這種方法的缺點(diǎn)就是可能會(huì)影響其他用戶(hù)(設(shè)置在了系統(tǒng)PATH變量中),并且可能會(huì)影響其他程序(其他的JDK被我們的屏蔽了)。第三種方法就是設(shè)置一個(gè)新的環(huán)境變量,例如“JAVA_HOME”,將其值設(shè)置為我們安裝的JDK的路徑,如"C:\ProgramFiles(x86)\Java\jdk1.7.0",我們運(yùn)行時(shí),只需輸入“"%JAVA_HOME%\bin\java"”即可(注意當(dāng)路徑中含有空格時(shí)要用雙引號(hào)將命令引起來(lái))。ApacheTomcat就使用這種方法。4.編譯并運(yùn)行例子程序:經(jīng)過(guò)了以上的步驟,JDK的環(huán)境就搭建好了,此時(shí),可能需要再編譯并運(yùn)行一個(gè)Java例子程序來(lái)對(duì)剛搭建的環(huán)境做最終的檢驗(yàn)。在這一節(jié)中,也會(huì)順便講到如何編譯和運(yùn)行一個(gè)Java程序,以及CLASSPATH的作用。更詳細(xì)的,可以參考另一篇文章《JDK下提供的工具詳解》。此程序包含兩個(gè).java文件:ExceptionDemo.java和HelloWorldException.java,前者屬于main包,而后者位于exceptions包(雖然它位于test\exceptions文件夾,這樣安排的目的是為了更好地描述CLASSPATH的作用):」國(guó)SFC」出main■山ExceptionDemo-.java」由test.exception5.,J,HelIqWorIdExceptio-nJava下面是它們的源代碼:ExceptionDemo.java:[java]viewplaincopypackagemain;importexceptions.HelloWorldException;publicclassExceptionDemo{TOC\o"1-5"\h\z/**** @paramargs* @throwsHelloWorldException*/public staticvoidmain(String[]args)

throwsHelloWorldException{thrownewHelloWorldException();}}HelloWorldException.java:[java]viewplaincopypackageexceptions;publicclassHelloWorldExceptionextendsException{privatestaticfinallongserialVersionUID=8679349130620681877L;publicHelloWorldException。{super("HelloWorld!");}}此程序仍然是一個(gè)經(jīng)典的HelloWorld程序(雖然這次它是以很不友好的方式向世界問(wèn)好一一通過(guò)拋出異常)。要編譯這個(gè)程序,首先嘗試第一種方法(下面的操作是在Windows命令行下進(jìn)行的,Linux與此類(lèi)似):進(jìn)入src文件夾,輸入"javacmain\ExceptionDemo.java",但編譯報(bào)錯(cuò):D:\workspaceG\wopkGpace_ul_l\jniJ-teEtX5PC>jauacmain^ExceptionDemo.jauamain\ExceptionDemo_:錯(cuò)誤二程序包―心口七不存在importexceptions-HelloUovldException;錯(cuò)誤二找不到符號(hào)mainkExceptionDemo_jaua:13錯(cuò)誤二找不到符號(hào)thi'owsHelloIJorldException: 類(lèi)HeHoWot'ldException:ExceptionDemo找不到符號(hào)main\ExceptionDemo-jaua:13: 吳;找不到符號(hào)throwneuHelloUorldExceptlon<^;8母二…類(lèi)HeHoUorldException置二類(lèi)ExceptIonDemo3個(gè)錯(cuò)誤為什么會(huì)提示找不到HelloWorldException呢?那是因?yàn)樵揓ava文件位于"test\exceptions\"目錄下,但它的包名卻是"exceptions",從當(dāng)前的src目錄,javac無(wú)法找到exceptions目錄,因?yàn)?src\exceptions"目錄是不存在的。接下來(lái),我們嘗試第二種方法:由src目錄進(jìn)入test目錄,運(yùn)行"javac..\main\Exceptiondemo.java":

0):5ui'ks:p£ic:Eg5(Ji'kgpa(:E_u:l..:L5y一■fccmtyi'c)cdtestD:Sworkspaces^orksvi-i^iny-test\3rc\test>javac..\nain\ExccptionDemo.JavaD;^AJorkspacBs^orkspace-Ul-l^jny-test\src\test>dir..^Jialn「驅(qū)動(dòng)蚩D中的卷沒(méi)有標(biāo)簽口卷的序列號(hào)是7234-9B9FD:\wopkspaces\uorkspace_ul.1Xmy-testXsrcXnain的目錄2011/08/2&2011/08/2&2011/08/2&2011/08/2&2011/08/2&2011/08/2&1S:35 <DIR> __18:49 347ExceptionDeno.classIS:33 274ExceptionDeno.java2個(gè)文件 621字節(jié)2個(gè)目錄213,320.005,888可用于-P編譯居然通過(guò)了!可以看到?jīng)]有報(bào)錯(cuò),并且main目錄下生成了ExceptionDemo.class文件(Java字節(jié)碼文件),說(shuō)明編譯確實(shí)成功了。但是為什么?我們使用了"..\main\Exceptiondemo.java”,這明顯不是ExceptionDemo的包路徑,為什么編譯器卻不報(bào)錯(cuò)呢?另外我們還注意到,我錯(cuò)誤地將"ExceptionDemo.java"寫(xiě)成y"Exceptiondemo.java",即將字母"D"的大小寫(xiě)弄錯(cuò)了,編譯器同樣沒(méi)有報(bào)錯(cuò)。原來(lái),javac只是將"..\main\Exceptiondemo.java"當(dāng)做普通路徑來(lái)尋找Java源程序文件,找到后即開(kāi)始編譯此文件,而當(dāng)其在編譯過(guò)程中發(fā)現(xiàn)程序還引用了其他類(lèi)時(shí)(如ExceptionDemo.java中引用了HelloWorldException類(lèi)),就會(huì)暫停對(duì)當(dāng)前文件的編譯,開(kāi)始尋找這個(gè)引用的類(lèi)文件,如果未找到,那么將會(huì)報(bào)告錯(cuò)誤,編譯失敗。前一種方法就是因?yàn)闆](méi)有找到HelloWorldException類(lèi)而出錯(cuò)的。那么javac程序是如何查找程序引用的其他類(lèi)的呢?答案是按照CLASSPATH指定的路徑加上程序所引用類(lèi)的包名來(lái)查找的。CLASSPATH默認(rèn)為“.”,即當(dāng)前路徑(我們之前也設(shè)置了CLASSPATH的值為“.”,但即使不設(shè)置,javac也會(huì)默認(rèn)以當(dāng)前路徑為起點(diǎn)來(lái)查找所引用的類(lèi)文件)。因此在這里javac會(huì)檢查"src\test\exceptions\"中是否有HelloWorldException.class文件,如果有,則繼續(xù)檢查其中是否有HelloWorldException.java文件,如果兩者都存在,則檢查HelloWorldException.class是否比HelloWorldException.java更新,如果答案是肯定的,則加載HelloWorldException.class并繼續(xù)編譯ExceptionDemo.java。而如果比較結(jié)果是HelloWorldException.java更新,或者不存在HelloWorldException.class,則說(shuō)明需要重新編譯HelloWorldException.java文件。如果只有.class文件而不存在.java文件,則加載之并繼續(xù)編譯ExceptionDemo.java。如果沒(méi)有找到目標(biāo)文件(HelloWorldException.class或HelloWorldException.java),那么javac將報(bào)告錯(cuò)誤(如之前那樣)。也就是說(shuō),編譯是遞歸進(jìn)行的:當(dāng)程序中引用了其他類(lèi)時(shí),javac會(huì)判斷是否需要編譯這些類(lèi),如果需要,則javac會(huì)首先編譯它們,如果這些類(lèi)再次用到了其他的類(lèi),javac將再次重復(fù)此過(guò)程,直到完成全部編譯。只要在此過(guò)程中有任何類(lèi)沒(méi)有找到,或者在其中發(fā)現(xiàn)了任何錯(cuò)誤,那么javac將報(bào)告錯(cuò)誤并中止編譯(javac可能在中止之前盡可能多地編譯,以盡量多地向用戶(hù)報(bào)告程序中的錯(cuò)誤)。可以用下面的圖來(lái)形象地展示這一過(guò)程:至于我們將大小寫(xiě)弄錯(cuò)了但javac卻沒(méi)有報(bào)錯(cuò)的原因,其實(shí)前面的說(shuō)明已經(jīng)隱含了解釋?zhuān)菏且驗(yàn)閖avac只

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論