亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java環(huán)境配置與編譯運(yùn)行詳解

 更新時(shí)間:2017年03月29日 14:21:41   作者:小小Prince  
這篇文章主要為大家詳細(xì)介紹了Java環(huán)境配置與編譯運(yùn)行的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、開篇

通過(guò)對(duì)之前Java之路的了解之后,相信初學(xué)者們都對(duì)Java有了一個(gè)比較深印象的了解了。但是事情不能總停留在理論層面,還得多多實(shí)現(xiàn),才能見(jiàn)真知。我覺(jué)得,學(xué)習(xí)一樣?xùn)|西,要遵循理論——實(shí)踐——理論這樣一個(gè)套路。先了解事情的基本概念,弄懂基本概念后,要想方設(shè)法的用到生活的點(diǎn)點(diǎn)滴滴上,這樣能加深理論的記憶以及發(fā)現(xiàn)自己的盲點(diǎn)。在重復(fù)的實(shí)踐中,我們會(huì)逐漸對(duì)其有了自己的看法、想法,對(duì)理論有了一定的深化。最后回歸理論,總結(jié)出自己的東西,這樣?xùn)|西就真正的屬于你了。所以,今天我們要開始動(dòng)手配Java環(huán)境,以及利用配好的Java環(huán)境來(lái)對(duì)程序進(jìn)行編譯運(yùn)行。要注意的是,為了能讓大家能更深刻的了解Java究竟是怎么樣運(yùn)作,怎樣編譯運(yùn)行的,本章不會(huì)涉及到任何IDE的使用,編碼當(dāng)然就是用記事本了。IDE對(duì)提高日常的開發(fā)效率,但是記事本能增加大家應(yīng)聘的錄取機(jī)會(huì)喲!

二、JDK下載

在《Java之路——Java初接觸》中已經(jīng)講過(guò),要進(jìn)行Java開發(fā),除了JRE(Java運(yùn)行環(huán)境)以外,還需要相應(yīng)的開發(fā)工具,所以我們需要下載JDK。下載JDK可以到Oracle官網(wǎng):https://www.oracle.com/ 上,選擇Downloads——Java for Developers,如下:

接著選擇download JDK,目前可選擇的最新版為8u121。

如果要想獲取以前的版本,可將頁(yè)面拉到最下面,選擇Java Archive,就可以獲取到歷史的Java版本。

我們這里以下載最新的8u121為例來(lái)進(jìn)行后續(xù)說(shuō)明。

三、JDK安裝

根據(jù)系統(tǒng)環(huán)境下載了對(duì)應(yīng)的版本之后,就可以進(jìn)行安裝了。整個(gè)安裝過(guò)程沒(méi)有什么特別,基本可以默認(rèn)下一步就行了。如果需要,可以修改一下相應(yīng)的目錄。

中途會(huì)彈出一個(gè)對(duì)話框,意思是JRE所安裝的目錄,選擇好目錄然后"下一步"就行。

安裝成功后,如果想看API文檔之類的,可以點(diǎn)擊它的"后續(xù)教程"。

至此,JDK已順利安裝完成。

四、環(huán)境配置

安裝成功后,怎么用呢?我們可以打開命令控制臺(tái),然后去到你安裝JDK目錄的bin目錄下,執(zhí)行java命令,如果有一大堆提示出來(lái),證明你已經(jīng)安裝正確了。

有的同學(xué)可能會(huì)遇到下面這種情況:

為什么會(huì)這樣子呢?細(xì)心的同學(xué)可能會(huì)發(fā)現(xiàn),當(dāng)前目錄不一樣。我一開始就說(shuō)了,我們需要在你安裝JDK目錄的bin目錄下執(zhí)行java命令,才能生效。原因很簡(jiǎn)單,就是因?yàn)閎in目錄下有各種各樣的命令,java是其中一個(gè)命令。我們用到的很多關(guān)于java的命令,如javac、javaw等,都是在其bin目錄下,所以大家以后深入學(xué)習(xí),可以先對(duì)bin目錄下的工具進(jìn)行學(xué)習(xí),里面有很多很有用的工具,這是后話。

回答剛剛的話題,如果一定要在bin目錄下才能運(yùn)行java命令是很不方便的一件事,不但不方便,很多其他程序要用到j(luò)ava命令也用不上,因?yàn)樗麄儾恢廊ツ睦镎襧ava命令。這個(gè)時(shí)候,我們就需要對(duì)系統(tǒng)配置環(huán)境變量,以方便在什么目錄下都能執(zhí)行java命令。

選擇"開始"——右鍵"計(jì)算機(jī)"——屬性——高級(jí)系統(tǒng)設(shè)置——環(huán)境變量,即可打開環(huán)境變量的設(shè)置窗口。

主要對(duì)以下三個(gè)變量進(jìn)行設(shè)置:

1.新增:JAVA_HOME,值為JDK路徑,此處為:C:\Program Files\Java\jdk1.8.0_121

2.編輯:PATH,在原變量值的最后加上";%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin"。這里稍作一下說(shuō)明。值里面的%JAVA_HOME%意思就是上一條新增變量JAVA_HOME的值,可見(jiàn)第一條新增變量JAVA_HOME是為了方便PATH變量配置的時(shí)候不需要寫得太冗長(zhǎng)。而PATH變量自身的意思就是windows會(huì)在PATH變量值里所列出的目錄中一條一條的查找要執(zhí)行的命令,所以只要配置了PATH,java命令就不需要一定在JDK目錄的bin目錄下執(zhí)行了。而至于為什么是上面那兩個(gè)目錄,是因?yàn)閎in下面的都是java用到的命令,也可以說(shuō)是一些工具。

3.新增:CLASSPATH,其值為".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar"。CLASSPATH的作用是讓java程序編譯的時(shí)候(用javac的時(shí)候)知道去哪里找到Java的源文件,或者字節(jié)碼文件(CLASS文件)。其中,dt.jar是關(guān)于運(yùn)行環(huán)境的類庫(kù),tools.jar是工具類庫(kù),編譯和運(yùn)行的時(shí)候都需要用到。這里值得十分注意的是,整串值的開始部分有個(gè)".",一定不能漏,這代表的是當(dāng)前目錄的意思。

當(dāng)配置完這三點(diǎn),我們?cè)僭谟脩舻哪夸浵逻\(yùn)行java -version命令,就能看到cmd能自動(dòng)找到j(luò)ava程序并且運(yùn)行了。

五、初識(shí)Java編譯

在開發(fā)我們的第一個(gè)Java程序之前,首先粗略的了解一下Java代碼的編譯和執(zhí)行的整個(gè)過(guò)程。我們經(jīng)常會(huì)看到Java工程里面有這兩種后綴的文件:.java和.class。這兩種文件分別代表Java的源代碼和字節(jié)碼文件,而其中的字節(jié)碼文件就是java實(shí)現(xiàn)"Write Once,Run Anywhere"的關(guān)鍵。我們可以先來(lái)看看下面兩幅圖[1]。

Java編譯器編譯Java代碼的流程如下:

JVM執(zhí)行引擎完成Java字節(jié)碼的執(zhí)行:

從上兩圖可以看到,Java運(yùn)行程序分兩步走,第一步是源碼編譯成字節(jié)碼,第二步是字節(jié)碼編譯成目標(biāo)代碼。這就和C、C++直接編譯成與機(jī)器相關(guān)的目標(biāo)代碼不一樣了。通過(guò)字節(jié)碼這一中間環(huán)節(jié),大家可以拿著編譯成功的包發(fā)布到任一有JVM環(huán)境的機(jī)器上,再由JVM來(lái)實(shí)現(xiàn)到機(jī)器相關(guān)的最終目標(biāo)代碼的編譯,從而做到"Write Once,Run Anywhere",而無(wú)需與具體運(yùn)行平臺(tái)綁定。所以我們通常所說(shuō)的對(duì)代碼進(jìn)行編譯,就是Java源代碼編譯成JVM字節(jié)碼的過(guò)程。

六、java與javac

在上一節(jié)我們已經(jīng)說(shuō)過(guò),%JAVA_HOME%\bin目錄下有大量的Java工具可以使用,我們以后也要逐漸熟悉。那作為初接觸java的我們,首先應(yīng)該熟悉哪個(gè)呢?無(wú)疑是java與javac了。

現(xiàn)在的社會(huì)節(jié)奏太快了,很多人都或多或少有點(diǎn)急功近利。在開發(fā)方便,這主要體現(xiàn)在沒(méi)理解程序的底層是怎么運(yùn)作的,一上來(lái)就開始IDE開發(fā),遇到各種問(wèn)題后,由于不懂底層原理,就不知道如何處理。個(gè)人認(rèn)為,IDE要用,可以極大的提高我們的生產(chǎn)效率,但是底層原理也一定要懂,不然都不知道IDE是怎么講你的程序編譯打包運(yùn)行的,遇到問(wèn)題的時(shí)候就不會(huì)解決了。很經(jīng)常見(jiàn)到的一種情況是,有些人看到服務(wù)器上沒(méi)有IDE就懵了,連怎么運(yùn)行jar包程序都不會(huì)。

回歸正傳,我們就從java與javac入手,了解怎么在命令行中編譯和運(yùn)行一個(gè)java程序。首先,我們分別認(rèn)識(shí)這兩個(gè)命令是怎么用的。

java命令:

作用:用于執(zhí)行類或者執(zhí)行jar文件。

在cmd控制臺(tái)中輸入java回車,我們可以得到j(luò)ava命令運(yùn)行的格式如下:

上圖沒(méi)有截完整,選項(xiàng)(-options)后面還有的,大家可自行運(yùn)行java命令來(lái)看。我們暫時(shí)忽略選項(xiàng)(-option)的內(nèi)容,主要看必填項(xiàng)"類"和"jar文件"。可以看到j(luò)ava命令可直接運(yùn)行類和jar文件。舉個(gè)例子,如何有個(gè)HelloWorld.class文件里面有個(gè)HelloWorld類,則運(yùn)行的命令是:java HelloWorld。這里要注意的是,java后面不是class文件(HelloWorld.class),而是對(duì)應(yīng)的類(HelloWorld)。如果有個(gè)HelloWorld.jar的jar文件,運(yùn)行的命令是:java -jar HelloWorld.jar。

javac命令:

作用:用于編譯.java文件。

在cmd控制臺(tái)中輸入javac回車,我們可以得到j(luò)avac命令運(yùn)行的格式如下:

我們暫時(shí)忽略選項(xiàng)(-option)的內(nèi)容,可以看到j(luò)avac最簡(jiǎn)單的格式就是跟一個(gè)源代碼文件。舉個(gè)例子,如果有一個(gè)HelloWorld.java文件需要對(duì)其編譯,則運(yùn)行的命令為:javac HelloWorld.java,就可以在當(dāng)前目錄下生成一個(gè)HelloWorld.class的字節(jié)碼文件。

七、第一個(gè)Java程序

了解完java和javac命令以后,我們就可以開始第一個(gè)Java程序了,當(dāng)然,我們是用記事本來(lái)開始我們的第一個(gè)Java程序。微軟自帶的記事本功能比較少,用戶體驗(yàn)也不是十分好,個(gè)人比較喜歡用Notepad++,大家可根據(jù)自己的習(xí)慣來(lái)選擇喜歡的記事本。

第一部分:

創(chuàng)建HelloWorld類,保存在HelloWorld.java文件中。

在cmd控制臺(tái)中,運(yùn)行javac HelloWorld.java命令對(duì)其編譯,則會(huì)自動(dòng)生成HelloWorld.class文件。

然后運(yùn)行java HelloWorld命令,則會(huì)顯示Hello World。這里一定要注意,不是運(yùn)行java HelloWorld.class,java后面跟的是要運(yùn)行的類,即HelloWorld。

這就完成了從代碼編寫,到編譯,再到運(yùn)行的整個(gè)過(guò)程了,是不是很簡(jiǎn)單呢?其實(shí)一切復(fù)雜的事情都是從簡(jiǎn)單做起,只要打好了基礎(chǔ),學(xué)習(xí)上層的東西就很簡(jiǎn)單了。

第二部分:

有人會(huì)問(wèn)了,那如果要引用其他的jar包或者類的話,那怎么辦呢?別急,我們嘗試一下。首先建個(gè)User類(只是隨便建個(gè)類,大家別太在意),它有個(gè)說(shuō)出內(nèi)容的方法,存在User.java文件中,代碼如下:

修改HelloWorld類,代碼如下:

User.java放在otherclass目錄睇下,不在HelloWorld.java同一個(gè)目錄:

然后我們嘗試用上面的方法進(jìn)行編譯,會(huì)發(fā)現(xiàn)提示找不到User類,這就是因?yàn)閖avac不知道去哪里找User類的緣故了。

遇到這些情況,我們一定要會(huì)看幫助提示,看看javac可以提供什么參數(shù)。這不單單為了解決目前的問(wèn)題,還為了以后解決各種各樣更多的問(wèn)題,只要能做到舉一反三,沒(méi)有什么問(wèn)題能難得到你。

我們可以看到,只要增加-classpath參數(shù),就可指定要查找的類的文件位置,這樣我們就可以給javac指定User的位置了,所以我們可以寫成:

則會(huì)成功編譯HelloWorld.java和User.java,在對(duì)應(yīng)目錄中生成HelloWorld.class和User.class。

這時(shí)候我們可以執(zhí)行java HelloWorld看看能否出結(jié)果,但可惜的是,又說(shuō)沒(méi)找到User類:

聰明的同學(xué)可能會(huì)想到,java應(yīng)該也有個(gè)-classpath參數(shù)。恭喜你,開始開竅了,那我們趕緊試試看:

又不行,崩潰中?。『呛?,別急,java跟javac有點(diǎn)不同,java帶著-classpath參數(shù)會(huì)是java只會(huì)在classpath所在的目錄里找類,所以如果HelloWorld實(shí)在當(dāng)前目錄下,要把當(dāng)前目錄加上,也就是加一".",如下:

這就成功運(yùn)行了。

第三部分:

這時(shí)候,有些人又不爽了,為什么每次編譯運(yùn)行都要執(zhí)行這么一大串東西,那多麻煩,如果類多起來(lái),那豈不是輸個(gè)命令都要輸半天,有沒(méi)有一些方便一點(diǎn)的方法,供以后執(zhí)行用呢?那當(dāng)然有,這就是將所有類打包成一個(gè)可執(zhí)行的jar包,以后直接運(yùn)行jar包就可以了。這里用到的命令是jar命令,我們先看看它的格式與內(nèi)容:

這里我們主要用到的是以下四個(gè)選項(xiàng):

-c 創(chuàng)建新的歸檔文件

-v 在標(biāo)準(zhǔn)輸出中生成詳細(xì)輸出

-f 指定歸檔文件名

-e 為捆綁到可執(zhí)行 jar 文件的獨(dú)立應(yīng)用程序

指定應(yīng)用程序入口點(diǎn)

這里我們根據(jù)提示的格式,用以下命令將User.class和HelloWorld.class打包成HelloWorld.jar包。

這就生成了一個(gè)HelloWorld.jar的文件。如果大家想看HelloWorld.jar里面有什么內(nèi)容,告訴大家一個(gè)小技巧,可以將jar包拖到winrar等壓縮軟件中,就可以看到具體的內(nèi)容。

可以看到里面除了要打包的內(nèi)容外,還多了一個(gè)META-INF文件夾,里面有一個(gè)MANIFEST.MF文件,這是一個(gè)清單文件,里面有相關(guān)的清單信息。我們需要對(duì)其進(jìn)行編輯,增加Class-Path:參數(shù),就如告訴java命令classpath是什么一樣。下圖中高亮的為增加的內(nèi)容:

最后,我們通過(guò)java -jar HelloWolrd.jar命令,則可運(yùn)行其程序。以后我們拿著這個(gè)jar包就可以隨處顯示"Hello World",比之前要弄一大串選項(xiàng)方便多了。

八、總結(jié)

本文從jdk的下載、安裝,環(huán)境的配置,程序的編寫、編譯以及執(zhí)行,從頭到尾做了很詳盡的介紹,為的是讓大家對(duì)這個(gè)過(guò)程有個(gè)深刻的了解。環(huán)境配好了,用上IDE了,以后大家就可能很少接觸這一過(guò)程的了。但這一過(guò)程不能丟,這是一個(gè)基礎(chǔ),正如我前面說(shuō)的,如果你不了解基礎(chǔ),遇到問(wèn)題的時(shí)候,都不知道從何解決。上層?xùn)|西學(xué)多了,但卻不了解底層究竟是怎么一回事,心里沒(méi)有底,人家換個(gè)包裝,你又重新學(xué)習(xí),而做不到舉一反三,那是事倍功半??!

九、參考資料

JVM學(xué)習(xí)筆記(二)------Java代碼編譯和執(zhí)行的整個(gè)過(guò)程

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring6?的JdbcTemplate的JDBC模板類的使用介紹(最新推薦)

    Spring6?的JdbcTemplate的JDBC模板類的使用介紹(最新推薦)

    JdbcTemplate?是Spring?提供的一個(gè)JDBC模板類,是對(duì)JDBC的封裝,簡(jiǎn)化JDBC代碼,當(dāng)然,你也可以不用,可以讓Spring集成其它的ORM框架,這篇文章主要介紹了Spring6?的JdbcTemplate的JDBC模板類的詳細(xì)使用說(shuō)明,需要的朋友可以參考下
    2024-05-05
  • JAVA?Springboot配置i18n國(guó)際化語(yǔ)言詳細(xì)步驟

    JAVA?Springboot配置i18n國(guó)際化語(yǔ)言詳細(xì)步驟

    國(guó)際化(Internationalization,縮寫為i18n)是指根據(jù)來(lái)展示不同的內(nèi)容,使應(yīng)用程序能夠適應(yīng)不同的語(yǔ)言和文化習(xí)慣,下面這篇文章主要給大家介紹了關(guān)于JAVA?Springboot配置i18n國(guó)際化語(yǔ)言的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08
  • javassist使用指南

    javassist使用指南

    這篇文章主要介紹了javassist的使用方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 詳解Spring-Boot集成Spring session并存入redis

    詳解Spring-Boot集成Spring session并存入redis

    這篇文章主要介紹了詳解Spring-Boot集成Spring session并存入redis,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 【Redis緩存機(jī)制】詳解Java連接Redis_Jedis_事務(wù)

    【Redis緩存機(jī)制】詳解Java連接Redis_Jedis_事務(wù)

    這篇文章主要介紹了【Redis緩存機(jī)制】詳解Java連接Redis_Jedis_事務(wù),詳細(xì)的介紹了Jedis事務(wù)和實(shí)例,有興趣的可以了解一下。
    2016-12-12
  • Java操作數(shù)據(jù)庫(kù)(行級(jí)鎖,for update)

    Java操作數(shù)據(jù)庫(kù)(行級(jí)鎖,for update)

    這篇文章主要介紹了Java操作數(shù)據(jù)庫(kù)(行級(jí)鎖,for update),文章圍繞Java操作數(shù)據(jù)庫(kù)的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2021-12-12
  • Java多線程之同步鎖-lock詳解

    Java多線程之同步鎖-lock詳解

    這篇文章主要為大家詳細(xì)介紹了Java多線程中同步鎖-lock的原理與使用,文中的示例代碼講解詳細(xì),對(duì)我們了解線程有一定幫助,需要的可以參考一下
    2022-10-10
  • spring boot測(cè)試打包部署的方法

    spring boot測(cè)試打包部署的方法

    spring boot項(xiàng)目如何測(cè)試,如何部署,在生產(chǎn)中有什么好的部署方案嗎?這篇文章就來(lái)介紹一下spring boot 如何開發(fā)、調(diào)試、打包到最后的投產(chǎn)上線,感興趣的朋友一起看看吧
    2018-01-01
  • SpringCloud?服務(wù)注冊(cè)中的nacos實(shí)現(xiàn)過(guò)程

    SpringCloud?服務(wù)注冊(cè)中的nacos實(shí)現(xiàn)過(guò)程

    這篇文章主要介紹了SpringCloud?服務(wù)注冊(cè)之nacos實(shí)現(xiàn)過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP軟件效果圖預(yù)覽之下載功能(2)

    Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP軟件效果圖預(yù)覽之下載功能(2)

    這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件,F(xiàn)TP軟件效果圖預(yù)覽之下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評(píng)論