一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java環境配置與編譯運行詳解

Java環境配置與編譯運行詳解

2020-09-03 13:58小小Prince Java教程

這篇文章主要為大家詳細介紹了Java環境配置與編譯運行的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、開篇

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

二、jdk下載

在《java之路——java初接觸》中已經講過,要進行java開發,除了jre(java運行環境)以外,還需要相應的開發工具,所以我們需要下載jdk。下載jdk可以到oracle官網:https://www.oracle.com/ 上,選擇downloads——java for developers,如下:

Java環境配置與編譯運行詳解

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

Java環境配置與編譯運行詳解

如果要想獲取以前的版本,可將頁面拉到最下面,選擇java archive,就可以獲取到歷史的java版本。

Java環境配置與編譯運行詳解

我們這里以下載最新的8u121為例來進行后續說明。

三、jdk安裝

根據系統環境下載了對應的版本之后,就可以進行安裝了。整個安裝過程沒有什么特別,基本可以默認下一步就行了。如果需要,可以修改一下相應的目錄。

Java環境配置與編譯運行詳解

中途會彈出一個對話框,意思是jre所安裝的目錄,選擇好目錄然后"下一步"就行。

Java環境配置與編譯運行詳解

安裝成功后,如果想看api文檔之類的,可以點擊它的"后續教程"。

Java環境配置與編譯運行詳解

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

四、環境配置

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

Java環境配置與編譯運行詳解

有的同學可能會遇到下面這種情況:

Java環境配置與編譯運行詳解

為什么會這樣子呢?細心的同學可能會發現,當前目錄不一樣。我一開始就說了,我們需要在你安裝jdk目錄的bin目錄下執行java命令,才能生效。原因很簡單,就是因為bin目錄下有各種各樣的命令,java是其中一個命令。我們用到的很多關于java的命令,如javac、javaw等,都是在其bin目錄下,所以大家以后深入學習,可以先對bin目錄下的工具進行學習,里面有很多很有用的工具,這是后話。

Java環境配置與編譯運行詳解

回答剛剛的話題,如果一定要在bin目錄下才能運行java命令是很不方便的一件事,不但不方便,很多其他程序要用到java命令也用不上,因為他們不知道去哪里找java命令。這個時候,我們就需要對系統配置環境變量,以方便在什么目錄下都能執行java命令。

選擇"開始"——右鍵"計算機"——屬性——高級系統設置——環境變量,即可打開環境變量的設置窗口。

Java環境配置與編譯運行詳解

主要對以下三個變量進行設置:

1.新增:java_home,值為jdk路徑,此處為:c:program filesjavajdk1.8.0_121

2.編輯:path,在原變量值的最后加上";%java_home%in;%java_home%jrein"。這里稍作一下說明。值里面的%java_home%意思就是上一條新增變量java_home的值,可見第一條新增變量java_home是為了方便path變量配置的時候不需要寫得太冗長。而path變量自身的意思就是windows會在path變量值里所列出的目錄中一條一條的查找要執行的命令,所以只要配置了path,java命令就不需要一定在jdk目錄的bin目錄下執行了。而至于為什么是上面那兩個目錄,是因為bin下面的都是java用到的命令,也可以說是一些工具。

3.新增:classpath,其值為".;%java_home%lib;%java_home%libdt.jar;%java_home%lib ools.jar"。classpath的作用是讓java程序編譯的時候(用javac的時候)知道去哪里找到java的源文件,或者字節碼文件(class文件)。其中,dt.jar是關于運行環境的類庫,tools.jar是工具類庫,編譯和運行的時候都需要用到。這里值得十分注意的是,整串值的開始部分有個".",一定不能漏,這代表的是當前目錄的意思。

當配置完這三點,我們再在用戶的目錄下運行java -version命令,就能看到cmd能自動找到java程序并且運行了。

Java環境配置與編譯運行詳解

五、初識java編譯

在開發我們的第一個java程序之前,首先粗略的了解一下java代碼的編譯和執行的整個過程。我們經常會看到java工程里面有這兩種后綴的文件:.java和.class。這兩種文件分別代表java的源代碼和字節碼文件,而其中的字節碼文件就是java實現"write once,run anywhere"的關鍵。我們可以先來看看下面兩幅圖[1]。

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

Java環境配置與編譯運行詳解

jvm執行引擎完成java字節碼的執行:

Java環境配置與編譯運行詳解

從上兩圖可以看到,java運行程序分兩步走,第一步是源碼編譯成字節碼,第二步是字節碼編譯成目標代碼。這就和c、c++直接編譯成與機器相關的目標代碼不一樣了。通過字節碼這一中間環節,大家可以拿著編譯成功的包發布到任一有jvm環境的機器上,再由jvm來實現到機器相關的最終目標代碼的編譯,從而做到"write once,run anywhere",而無需與具體運行平臺綁定。所以我們通常所說的對代碼進行編譯,就是java源代碼編譯成jvm字節碼的過程。

六、java與javac

在上一節我們已經說過,%java_home%in目錄下有大量的java工具可以使用,我們以后也要逐漸熟悉。那作為初接觸java的我們,首先應該熟悉哪個呢?無疑是java與javac了。

現在的社會節奏太快了,很多人都或多或少有點急功近利。在開發方便,這主要體現在沒理解程序的底層是怎么運作的,一上來就開始ide開發,遇到各種問題后,由于不懂底層原理,就不知道如何處理。個人認為,ide要用,可以極大的提高我們的生產效率,但是底層原理也一定要懂,不然都不知道ide是怎么講你的程序編譯打包運行的,遇到問題的時候就不會解決了。很經常見到的一種情況是,有些人看到服務器上沒有ide就懵了,連怎么運行jar包程序都不會。

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

java命令:

作用:用于執行類或者執行jar文件。

在cmd控制臺中輸入java回車,我們可以得到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命令運行的格式如下:

Java環境配置與編譯運行詳解

我們暫時忽略選項(-option)的內容,可以看到javac最簡單的格式就是跟一個源代碼文件。舉個例子,如果有一個helloworld.java文件需要對其編譯,則運行的命令為:javac helloworld.java,就可以在當前目錄下生成一個helloworld.class的字節碼文件。

七、第一個java程序

了解完java和javac命令以后,我們就可以開始第一個java程序了,當然,我們是用記事本來開始我們的第一個java程序。微軟自帶的記事本功能比較少,用戶體驗也不是十分好,個人比較喜歡用notepad++,大家可根據自己的習慣來選擇喜歡的記事本。

第一部分:

創建helloworld類,保存在helloworld.java文件中。

Java環境配置與編譯運行詳解

在cmd控制臺中,運行javac helloworld.java命令對其編譯,則會自動生成helloworld.class文件。

Java環境配置與編譯運行詳解

然后運行java helloworld命令,則會顯示hello world。這里一定要注意,不是運行java helloworld.class,java后面跟的是要運行的類,即helloworld。

Java環境配置與編譯運行詳解

這就完成了從代碼編寫,到編譯,再到運行的整個過程了,是不是很簡單呢?其實一切復雜的事情都是從簡單做起,只要打好了基礎,學習上層的東西就很簡單了。

第二部分:

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

Java環境配置與編譯運行詳解

修改helloworld類,代碼如下:

Java環境配置與編譯運行詳解

user.java放在otherclass目錄睇下,不在helloworld.java同一個目錄:

Java環境配置與編譯運行詳解

然后我們嘗試用上面的方法進行編譯,會發現提示找不到user類,這就是因為javac不知道去哪里找user類的緣故了。

Java環境配置與編譯運行詳解

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

Java環境配置與編譯運行詳解

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

Java環境配置與編譯運行詳解

則會成功編譯helloworld.java和user.java,在對應目錄中生成helloworld.class和user.class。

這時候我們可以執行java helloworld看看能否出結果,但可惜的是,又說沒找到user類:

Java環境配置與編譯運行詳解

聰明的同學可能會想到,java應該也有個-classpath參數。恭喜你,開始開竅了,那我們趕緊試試看:

Java環境配置與編譯運行詳解

又不行,崩潰中?。『呛?,別急,java跟javac有點不同,java帶著-classpath參數會是java只會在classpath所在的目錄里找類,所以如果helloworld實在當前目錄下,要把當前目錄加上,也就是加一".",如下:

Java環境配置與編譯運行詳解

這就成功運行了。

第三部分:

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

Java環境配置與編譯運行詳解

這里我們主要用到的是以下四個選項:

-c 創建新的歸檔文件

-v 在標準輸出中生成詳細輸出

-f 指定歸檔文件名

-e 為捆綁到可執行 jar 文件的獨立應用程序

指定應用程序入口點

這里我們根據提示的格式,用以下命令將user.class和helloworld.class打包成helloworld.jar包。

Java環境配置與編譯運行詳解

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

Java環境配置與編譯運行詳解

可以看到里面除了要打包的內容外,還多了一個meta-inf文件夾,里面有一個manifest.mf文件,這是一個清單文件,里面有相關的清單信息。我們需要對其進行編輯,增加class-path:參數,就如告訴java命令classpath是什么一樣。下圖中高亮的為增加的內容:

Java環境配置與編譯運行詳解

最后,我們通過java -jar hellowolrd.jar命令,則可運行其程序。以后我們拿著這個jar包就可以隨處顯示"hello world",比之前要弄一大串選項方便多了。

Java環境配置與編譯運行詳解

八、總結

本文從jdk的下載、安裝,環境的配置,程序的編寫、編譯以及執行,從頭到尾做了很詳盡的介紹,為的是讓大家對這個過程有個深刻的了解。環境配好了,用上ide了,以后大家就可能很少接觸這一過程的了。但這一過程不能丟,這是一個基礎,正如我前面說的,如果你不了解基礎,遇到問題的時候,都不知道從何解決。上層東西學多了,但卻不了解底層究竟是怎么一回事,心里沒有底,人家換個包裝,你又重新學習,而做不到舉一反三,那是事倍功半??!

九、參考資料

jvm學習筆記(二)------java代碼編譯和執行的整個過程

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 白丝爆动漫羞羞动漫网站 | 天堂久久久久va久久久久 | 韩国理论三级在线观看视频 | 精品淑女少妇AV久久免费 | 青青青青青操 | 亚洲国产精品无圣光一区二区 | 亚洲精品一区二区久久这里 | 亚洲精品久久久久AV无码 | 欧美一区二区三区大片 | 特黄视频| 啊啊啊好大视频 | 国产精品久久久久无毒 | 欧美贵妇videos办公室360 | 精品蜜臀AV在线天堂 | 黄色aaa| 好大好爽好舒服视频 | 亚洲第一区在线观看 | 色多多多| 给我视频免费看 | 人配人种视频xxxx | 调教女警花穿环上班 | 午夜十八岁禁 | 亚洲激情在线视频 | 国产日韩精品一区二区在线观看播放 | 4hc44四虎www在线影院男同 | 欧美人畜 | 草大逼 | 亚洲 日本 中文字幕 制服 | 国产好痛疼轻点好爽的视频 | caoporen在线视频入口 | 99精彩视频在线观看 | 经典欧美gifxxoo动态图暗网 | 二次元美女互摸隐私互扒 | 国产精品玖玖玖影院 | 精品一区二区三区高清免费不卡 | 美琪美腿白丝交小说 | 女王脚奴vk| 欧美日韩亚洲国内综合网香蕉 | 精品无码国产污污污免费网站2 | 日韩影院在线观看 | 亚洲欧美日韩成人 |