這篇文章主要為大家詳細介紹了Java環境配置與編譯運行的相關資料,具有一定的參考價值,有興趣的小夥伴們可以參考一下
一、開篇
透過對先前Java之路的了解之後,相信初學者都對Java有了一個比較深印象的了解了。這樣一個套路。實踐中,我們會逐漸對其有了自己的看法、想法,對理論有了一定的深化。手配Java環境,以及利用配好的Java環境來對程式進行編譯運行。 IDE的使用,編碼當然就是用記事本了。 要進行Java開發,除了JRE(Java運行環境)以外,還需要對應的開發工具,所以我們需要下載JDK。 for
Developers,如下:
接著選擇download JDK,目前可選取的最新版為8u121。 ##如果想要取得先前的版本,可將頁面拉到最下面,選擇Java Archive,就可以取得到歷史的Java版本。這裡以下載最新的8u121為例來進行後續說明。 ,就可以進行安裝了。一個對話框,意思是JRE所安裝的目錄,選擇好目錄然後"下一步"就行。 #文檔之類的,可以點選它的"後續教學"。
至此,JDK已順利安裝完成。四、環境配置
安裝成功後,怎麼用呢?我們可以打開指令控制台,然後去到你安裝JDK目錄的bin目錄下,執行java指令,如果有一大堆提示出來,證明你已經安裝正確了。
有的同學可能會遇到下面這種情況:
為什麼會這樣子呢?細心的同學可能會發現,目前目錄不一樣。我一開始就說了,我們需要在你安裝JDK目錄的bin目錄下執行java指令,才能生效。原因很簡單,就是因為bin目錄下有各式各樣的指令,java就是其中一個指令。我們用到的許多關於java的指令,如javac、javaw等,都是在其bin目錄下,所以大家以後深入學習,可以先對bin目錄下的工具進行學習,裡面有很多很有用的工具,這是後話。
回答剛剛的話題,如果一定要在bin目錄下才能運行java指令是很不方便的一件事,不但不方便,很多其他程式要用到java指令也用不上,因為他們不知道去哪裡找java命令。這個時候,我們就需要對系統配置環境變數,以便在什麼目錄下都能執行java指令。
選擇"開始"—右鍵"計算機"—屬性—進階系統設定—環境變數,即可打開環境變數的設定視窗。
主要設定以下三個變數:
#1.新增:JAVA_HOME,值為JDK路徑,此處為:C:\Program Files\Java\jdk1.8.0_121
2.編輯:PATH,在原變數值的最後加上";%JAVA_HOME% \bin;%JAVA_HOME%\jre\bin"。這裡稍作一下說明。值裡面的%JAVA_HOME%意思就是上一條新增變數JAVA_HOME的值,可見第一個新增變數JAVA_HOME是為了方便PATH變數設定的時候不需要寫得太冗長。而PATH變數本身的意思就是windows會在PATH變數值裡所列出的目錄中一條一條的查找要執行的指令,所以只要配置了PATH,java指令就不需要一定在JDK目錄的bin目錄下執行了。而至於為什麼是上面那兩個目錄,是因為bin下面的都是java用到的指令,也可以說是一些工具。
3.新增:CLASSPATH,其值為".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME %\lib\tools.jar"。 CLASSPATH的功能是讓java程式編譯的時候(用javac的時候)知道要去哪裡找Java的原始文件,或是字節碼文件(CLASS文件)。其中,dt.jar是關於運行環境的類別庫,tools.jar是工具類別庫,編譯和運行的時候都需要用到。這裡值得十分注意的是,整串值的開始部分有個".",一定不能漏,這代表的是當前目錄的意思。
當配置完這三點,我們再在使用者的目錄下執行java -version指令,就能看到cmd能自動找到java程式並且運行了。
五、初識Java編譯
#在開發我們的第一個Java程式之前,先粗略的了解Java程式碼的編譯和執行的整個過程。我們常常會看到Java工程裡面有這兩種字尾的檔案:.java和.class。這兩個文件分別代表Java的原始碼和字節碼文件,而其中的字節碼文件就是java實作"Write Once,Run Anywhere"的關鍵。我們可以先來看看下面兩張圖[1]。
Java編譯器編譯Java程式碼的流程如下:
JVM執行引擎完成Java字節碼的執行:
#從上兩圖可以看到,Java執行程式分兩步驟走,第一步是原始碼編譯成字節碼,第二步是字節碼編譯成目標碼。這就跟C、C++直接編譯成與機器相關的目標程式碼不一樣了。透過字節碼這一中間環節,大家可以拿著編譯成功的包發佈到任一有JVM環境的機器上,再由JVM來實現到機器相關的最終目標代碼的編譯,從而做到"Write Once, Run Anywhere",而無需與特定運行平台綁定。所以我們通常所說的對程式碼進行編譯,就是Java原始碼編譯成JVM字節碼的過程。
六、java與javac
在上一節我們已經說過,%JAVA_HOME%\bin目錄下有大量的Java工具可以使用,我們以後也要逐漸熟悉。那作為初接觸java的我們,首先應該熟悉哪一個呢?無疑是java與javac了。
現在的社會節奏太快了,很多人或多或少都有點急功近利。在開發方便,這主要體現在沒理解程式的底層是怎麼運作的,一上來就開始IDE開發,遇到各種問題後,由於不懂底層原理,就不知道如何處理。個人認為,IDE要用,可以極大的提高我們的生產效率,但是底層原理也一定要懂,不然都不知道IDE是怎麼講你的程式編譯打包運行的,遇到問題的時候就不會解決了。很常見到的一種情況是,有些人看到伺服器上沒有IDE就懵了,連怎麼運作jar包程式都不會。
回歸正傳,我們就從java與javac入手,了解怎麼在命令列中編譯和執行一個java程式。首先,我們分別認識這兩個命令是怎麼用的。
java指令:
作用:用於執行類別或執行jar檔。
在cmd控制台中輸入java回車,我們可以得到java指令運行的格式如下:
#上圖沒有截完整,選項(-options )後面還有的,大家可自行執行java指令來看。我們暫時忽略選項(-option)的內容,主要看必填項"類"和"jar檔"。可以看到java指令可直接運行類別和jar檔。舉個例子,如何有個HelloWorld.class檔案裡面有個HelloWorld類,則執行的指令是:java HelloWorld。這裡要注意的是,java後面不是class檔案(HelloWorld.class),而是對應的類別(HelloWorld)。如果有HelloWorld.jar的jar文件,執行的指令是:java -jar HelloWorld.jar。
javac指令:
作用:用於編譯.java檔。
在cmd控制台中輸入javac回車,我們可以得到javac指令運行的格式如下:
我們暫時忽略選項(-option)的內容,可以看到javac最簡單的格式就是跟著一個原始碼檔。舉個例子,如果有一個HelloWorld.java檔案需要編譯,則執行的指令為:javac HelloWorld.java,就可以在目前目錄下產生一個HelloWorld.class的字節碼檔案。
七、第一個Java程式
了解完java和javac指令以後,我們就可以開始第一個Java程式了,當然,我們是用記事本來開始我們的第一個Java程式。微軟自備的記事本功能比較少,使用者體驗也不是十分好,個人比較喜歡用Notepad++,大家可依照自己的習慣來選擇喜歡的記事本。
第一部分:
建立HelloWorld類,保存在HelloWorld.java檔案中。
在cmd控制台中,執行javac HelloWorld.java指令對其編譯,則會自動產生HelloWorld.class檔案。
然後執行java HelloWorld指令,則會顯示Hello World。這裡一定要注意,不是執行java HelloWorld.class,java後面跟著的是要運行的類,也就是HelloWorld。
這就完成了從程式碼編寫,到編譯,再到運行的整個過程了,是不是很簡單呢?其實一切複雜的事情都是從簡單做起,只要打好了基礎,學習上層的東西就很簡單了。
第二部分:
有人會問了,那如果要引用其他的jar套件或類別的話,那該怎麼辦呢?別急,我們試試看。先建個User類別(只是隨便建個類,大家別太在意),它有個說出內容的方法,存在著User.java檔中,程式碼如下:
修改HelloWorld類,程式碼如下:
User.java放在otherclass目錄中,不在HelloWorld.java同一個目錄:
然後我們嘗試用上面的方法進行編譯,會發現提示找不到User類,這就是因為javac不知道要去哪裡找User類的緣故了。
遇到這些情況,我們一定要會看幫助提示,看看javac可以提供什麼參數。這不單單為了解決目前的問題,也為了以後解決各種更多的問題,只要能做到舉一反三,沒有什麼問題能難得到你。
我們可以看到,只要增加-classpath參數,就可指定要尋找的類別的檔案位置,這樣我們就可以給javac指定User的位置了,所以我們可以寫成:
則會成功編譯HelloWorld.java和User.java,在對應目錄中產生HelloWorld.class和User.class。
這時候我們可以執行java HelloWorld看看能否出結果,但可惜的是,又說沒找到User類別:
聰明的同學可能會想到,java應該也有個-classpath參數。恭喜你,開始開訣竅了,那我們趕緊試試看:
又不行,崩潰中! !呵呵,別急,java跟javac有點不同,java帶著-classpath參數會是java只會在classpath所在的目錄裡找類,所以如果HelloWorld實在目前目錄下,要把目前目錄加上,也就是加一".",如下:
這就成功運行了。
第三部分:
這時候,有些人又不爽了,為什麼每次編譯運行都要執行這麼一大串東西,那多麻煩,如果類別多起來,那豈不是輸個命令都要輸半天,有沒有一些方便一點的方法,供以後執行用呢?那當然有,這就是將所有類別打包成一個可執行的jar包,以後直接運行jar包就可以了。這裡用到的指令是jar指令,我們先看看它的格式與內容:
這裡我們主要用到的是以下四個選項:
-c 建立新的歸檔檔案
-v 在標準輸出中產生詳細輸出
#-f 指定歸檔檔案名稱
-e 為捆綁到可執行jar檔案的獨立應用程式
指定應用程式入口點
這裡我們依照提示的格式,用下列指令將User.class和HelloWorld.class打包成HelloWorld.jar套件。
這就產生了一個HelloWorld.jar的檔案。如果大家想看HelloWorld.jar裡面有什麼內容,告訴大家一個小技巧,可以將jar包拖到winrar等壓縮軟體中,就可以看到具體的內容。
可以看到裡面除了要打包的內容外,還多了一個META-INF資料夾,裡面有一個MANIFEST.MF文件,這是一個清單文件,裡面有相關的清單資料。我們需要對其進行編輯,增加Class-Path:參數,就如告訴java指令classpath是什麼一樣。下圖中高亮的為增加的內容:
最後,我們透過java -jar HelloWolrd.jar指令,則可執行其程式。以後我們拿著這個jar包就可以隨處顯示"Hello World",比之前要弄一大串選項方便多了。
八、總結
本文從jdk的下載、安裝,環境的配置,程式的編寫、編譯、執行,從頭到尾做了很詳盡的介紹,為的是讓大家對這個過程有個深刻的了解。環境配好了,用上IDE了,以後大家可能很少接觸到這過程的了。但這過程不能丟,這是一個基礎,正如我前面說的,如果你不了解基礎,遇到問題的時候,都不知道從何解決。上層東西學多了,但卻不了解底層究竟是怎麼一回事,心裡沒有底,人家換個包裝,你又重新學習,而做不到舉一反三,那是事倍功半啊!
以上是詳解Java環境配置與編譯運行(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!