最全最易理解的環(huán)境變量!

oen【引導(dǎo)】(先關(guān)注我呀词身!

首先厅目,我們?yōu)榱四軌蚓幾g和運(yùn)行java程序,需要在PATH環(huán)境變量中把java.exe所在的目錄設(shè)置為 PATH變量的一部分法严,目的是為了能夠通過命令行運(yùn)行javac和java命令成為可能损敷。

當(dāng)你在命令行中輸入javac ...或者java ...的時(shí)候,如果提示你一個(gè)錯(cuò)誤:'javac' 不是內(nèi)部命令或外部命令深啤,也不是可運(yùn)行的程序或批處理文件拗馒。這時(shí)候說明操作系統(tǒng)沒有找到你通過命令行輸入的javac這個(gè)命令。

為什么呢墓塌?因?yàn)椴僮飨到y(tǒng)并 不知道你的javac.exe這個(gè)文件在哪里瘟忱,所以無法執(zhí)行對(duì)應(yīng)的文件。

那么為了能夠讓操作系統(tǒng)找到這個(gè)可執(zhí)行文件苫幢,我們就需要把javac.exe這個(gè) 可執(zhí)行文件所在的目錄作為PATH環(huán)境變量的一部分設(shè)置起來访诱,這樣當(dāng)你在命令行輸入一個(gè)命令的時(shí)候,操作系統(tǒng)就會(huì)自動(dòng)搜索PATH變量中所指定的所有目錄 了韩肝。

在Windows系統(tǒng)中PATH變量中的所有路徑采用分號(hào)分割触菜,如果在Linux系統(tǒng)中采用冒號(hào)分割。

PS哀峻,如果你設(shè)置好了環(huán)境變量涡相,在命令 行中還是出現(xiàn)同樣的錯(cuò)誤哲泊,那么有兩種可能,一種就是你的設(shè)置不正確催蝗,另一種就是你的設(shè)置沒有生效切威,一般你可以關(guān)閉命令行窗口再重新打開就可以了。

two【概述】(萌新求關(guān)注呀丙号!

①環(huán)境變量就是一個(gè)系統(tǒng)的路徑,當(dāng)用到相關(guān)的東西,它會(huì)從環(huán)境變量中來查找需要的東西.

首先簡(jiǎn)單的說明如何設(shè)置環(huán)境變量

1.安裝JDK后先朦,假設(shè)把JDK安裝在D:\Java\jdk1.5.0_06

2.然后在我的電腦上單擊鼠標(biāo)右鍵→選擇屬性→選擇高級(jí)→環(huán)境變量

(win10 在控制面板(win+x)→系統(tǒng)與安全→系統(tǒng)→高級(jí)系統(tǒng)設(shè)置→環(huán)境變量)

3.新建用戶變量 CLASSPATH 變量值 .;D:\Java\jdk1.5.0_06\lib\tools.jar;

(“.”意味在當(dāng)前目錄下找被編譯的類,后文有解釋)

4.新建系統(tǒng)變量 JAVA_HOME 變量值 D:\Java\jdk1.5.0_06

5.編輯系統(tǒng)變量 Path 變量值 %JAVA_HOME%\bin;

PS將 PATH的內(nèi)容修改為:...;%JAVA_HOME%\bin是因?yàn)槿В?dāng)你的系統(tǒng)中重新安裝JDK喳魏,并改變過目錄的話,你只要修改 JAVA_HOME的內(nèi)容就可以了怀薛,PATH則不需要修改刺彩。

此外蟹略,JAVA_HOME變量還會(huì)有一些其他用途磺平,比如Eclipse這個(gè)IDE,它本身是由 java程序編寫的弃揽,那么在運(yùn)行的時(shí)候必然需要虛擬機(jī)的存在鼓择,所以Eclipse在啟動(dòng)時(shí)需要查找虛擬機(jī)三幻,如果有JAVA_HOME這個(gè)變量就漾,那么 Eclipse就會(huì)利用這個(gè)變量找到虛擬機(jī)的路徑呐能。

PSS具體想知道為什么,新建用戶變量 CLASSPATH抑堡,新建系統(tǒng)變量 JAVA_HOME往后看

設(shè)定path是告訴系統(tǒng)摆出,執(zhí)行檔程式位于什么地方。主要是執(zhí)行JAVAc和JAVA這兩個(gè)程式時(shí)使用的首妖,也就是當(dāng)你在命令列打入JAVAC??xxx.java和JAVA xxx時(shí)偎漫,系統(tǒng)要去哪那里找JAVAc和JAVA這兩個(gè)執(zhí)行檔。

②path&classpath

path:用來制定java虛擬機(jī)(JVM)所在的路徑有缆,設(shè)定path就是告訴系統(tǒng)象踊,執(zhí)行檔程式位于什么地方。也就是我們經(jīng)常用來編譯java源程序的javac.exe和執(zhí)行編譯后生成的.class的java.exe;(path主要是執(zhí)行JAVAc和JAVA這兩個(gè)程式時(shí)使用的棚壁,也就是當(dāng)在命令列打入JAVAC??xxx.java和JAVA xxx時(shí)杯矩,告訴系統(tǒng)去哪里找JAVAc和JAVA這兩個(gè)執(zhí)行檔。)

classpath:用來指定自己所寫的和要用到類文件(.jar)的路徑袖外。

Path :Path指定一個(gè)路徑列表史隆,用于搜索可執(zhí)行文件,執(zhí)行一個(gè)可執(zhí)行文件時(shí)曼验,如果不能在當(dāng)前路徑下找到泌射,則依次尋找path中的每一個(gè)路徑粘姜,直到找到。以便正確快速運(yùn)行.java程序熔酷。

(PS,設(shè)置path是因?yàn)閣indow xp是多用戶操作系統(tǒng)孤紧,支持不同用戶的個(gè)性化系統(tǒng)定制,這里設(shè)置的信息只影響當(dāng)前用戶拒秘,而不會(huì)影響其他用戶坛芽。假如只有一個(gè)用戶,只是運(yùn)行.class文件翼抠,則也不需要設(shè)置path環(huán)境咙轩,因?yàn)镴DK安裝之后會(huì)把java.exe等幾個(gè)關(guān)鍵文件復(fù)制到c:\windows\system32目錄中,而此目錄已經(jīng)存在于path變量阴颖,所以說用戶變量path隨不同用戶而設(shè)置的活喊,設(shè)置路徑:“D:\jdk1.5\bin ”。)

ClassPath:指定JAVA的類文件存放路徑量愧。classpath就是指定這樣一個(gè)路徑钾菊,即你運(yùn)行程序所需要的class文件的位置。

(設(shè)置classpath是為了將要使用到的class文件與Java中得類庫(kù)文件關(guān)聯(lián)起來,用以運(yùn)行一些特殊的java程序偎肃,如以.jar為后綴的文件或者是javac運(yùn)行java程序

設(shè)置方法是:(安裝jdk是的目錄為:d:\jdk1.5) 那么就在“變量值”文本框中鍵入“.;D:\jdk1.\lib\dt.jar;D:\jdk1.5\lib\tools.jar ”煞烫;)

three【詳解】(給個(gè)贊呀

①Path和classpath區(qū)別:

1.path的作用

path是系統(tǒng)用來指定可執(zhí)行文件的完整路徑,即使不在path中設(shè)置JDK的路徑也可執(zhí)行JAVA文件累颂,但必須把完整的路徑寫出來滞详,如C:\Program Files\Java\jdk1.6.0_10\bin\javac TheClass.java。path是用來搜索所執(zhí)行的可執(zhí)行文件路徑的紊馏,如果執(zhí)行的可執(zhí)行文件不在當(dāng)前目錄下料饥,那就會(huì)依次搜索path中設(shè)置的路徑;而java的各種操作命令是在其安裝路徑中的bin目錄下朱监,所以在path中設(shè)置了JDK的安裝目錄后就不用再把java文件的完整路徑寫出來了岸啡,它會(huì)自動(dòng)去path中設(shè)置的路徑中去找;

2.classpath的作用

classpath是指定你在程序中所使用的類(.class)文件所在的位置赫编,就如在引入一個(gè)類時(shí):import javax.swing.JTable這句話是告訴編譯器要引入javax.swing這個(gè)包下的JTable類巡蘸,而classpath就是告訴編譯器該到哪里去找到這個(gè)類(前提是你在classpath中設(shè)置了這個(gè)類的路徑);所以如果你沒有設(shè)定擂送,那JAVA就會(huì)跟你說它找不到悦荒。就算你是在JTable.javax.swing所在的路徑指向這個(gè)命令,也要在 classpath 里面跟 Java 說要到目前所在的路徑尋找JTable.javax.swing团甲。否則JAVA還是找不到的逾冬。另外 如果 JTable.javax.swing 里面用到 b.class 時(shí),在 classpath設(shè)定中也要包含 b.class 所在的路徑。

PS.如果你想要編譯在當(dāng)前目錄下找身腻,就加上“.”,如:.;C:\Program Files\Java\jdk\,這樣編譯器就會(huì)到當(dāng)前目錄和C:\Program Files\Java\jdk\去找javax.swing.JTable這個(gè)類产还;

PSS.大多數(shù)人都是用Eclipse寫程序,不設(shè)classpath也沒關(guān)系嘀趟,因?yàn)镋clipse有相關(guān)的配置脐区;

path是os用

classpath java用

path里面不光有Java的bin,還可以包含許多其他的她按,tc啊牛隅,masm阿,只要在path中設(shè)了這些環(huán)境的路徑酌泰,你在dos下的任何路徑上都可以調(diào)用這些路徑下的命令媒佣。

classpath是java專用的查找類的路徑

②系統(tǒng)變量是環(huán)境變量區(qū)別

系統(tǒng)變量是環(huán)境變量的一種,環(huán)境變量一種僅本用戶適用陵刹,另一種即系統(tǒng)變量整個(gè)系統(tǒng)的用戶都適用,兩者都可以在使用應(yīng)用程序時(shí)提供快捷.一般在編輯java文件或者C#文件時(shí)需要修改,設(shè)計(jì)到多個(gè)文件夾之間的切換時(shí)也可以根據(jù)自己的需要設(shè)置.

簡(jiǎn)單的說就是默伍,如果設(shè)置系統(tǒng)變量和用戶變量,都叫做設(shè)置環(huán)境變量衰琐,設(shè)置系統(tǒng)變量時(shí)也糊,該系統(tǒng)的所有帳號(hào)的用戶都可以使用,但是設(shè)置用戶變量時(shí)羡宙,其他的帳號(hào)登陸時(shí)就不一定可以使用狸剃。

下面以java環(huán)境變量為例設(shè)置方法:

1、如果是Win95/98狗热,在\autoexec.bat的最后面添加如下3行語(yǔ)句:

JAVA_HOME=c:\j2sdk1.4.1

PATH=%JAVA_HOME%\bin;%PATH%

CLASSPATH=.;%JAVA_HOME%\lib

看好了CLASSPATH中第一個(gè)"."钞馁,這個(gè)代表當(dāng)前目錄,很多人HelloWorld沒有運(yùn)行起來大多是這個(gè)原因斗搞。

2指攒、如果是Win2000或者XP慷妙,使用鼠標(biāo)右擊"我的電腦"->屬性->高級(jí)->環(huán)境變量

系統(tǒng)變量->新建->變量名:JAVA_HOME 變量值:c:\j2sdk1.4.1

系統(tǒng)變量->新建->變量名:CLASSPATH 變量值:.;%JAVA_HOME%\lib

系統(tǒng)變量->編輯->變量名:Path 在變量值的最前面加上:%JAVA_HOME%\bin;

CLASSPATH前面的那個(gè)"."和上面的意義是一樣的僻焚。

3、如果是Linux用戶

在你的環(huán)境中膝擂,通常我加在.bashrc文件中虑啤,你可以加在你的Profile文件中。

/usr/local/jdk 為你安裝jdk的目錄架馋。

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=.:$JAVA_HOME/lib

export PATH=$PATH:$JAVA_HOME/bin


HelloWorld.java經(jīng)典測(cè)試代碼:

public class HelloWorld{

public static void main(String args[]){

System.out.println("hello world !")

}

}

命令行輸入:javac HelloWorld.java

生成HelloWorld.class

命令行輸入:java HelloWorld

屏幕上打印"hello world !"

for【不建議大家設(shè)置CLASSPATH這個(gè)環(huán)境變量】

我們繼續(xù)來談?wù)揅LASSPATH的問題狞山,很多書上在講解java程序的時(shí)候建議大家設(shè)置CLASSPATH這個(gè)環(huán)境變量,我們這里不建議大家設(shè)置叉寂。原因 我們會(huì)在稍后的時(shí)候看到萍启。講到CLASSPATH,

我們首先來看編寫java程序時(shí)一直在用的兩個(gè)命令javac和java。

javac的命令語(yǔ)法是這樣的:

javac <選項(xiàng)> <源文件>

我們常用的情況是這樣的:

javac -classpath <類路徑> <要編譯的java源文件>

這里的類路徑輸入什么呢勘纯?這里的類路徑是指要編譯的java源文件中所用的非java的基礎(chǔ)API中的類在那個(gè)目錄下局服,路徑可以是多個(gè)目錄,用分號(hào)隔開 來驳遵。比如說我們要編譯App.java這個(gè)文件淫奔,而這個(gè)文件中用到了com.util這個(gè)包中的MyDate這個(gè)類,現(xiàn)在我們假設(shè)MyDate這個(gè)類存在 目錄是:d:\mylib\com\util\MyDate.class堤结,那么我們?nèi)绾尉幾gApp這個(gè)類呢唆迁?我們的命令如下:

javac -classpath d:\mylib App.java

注意這里的classpath的內(nèi)容,我們只是指定路徑到package所在目錄竞穷,并不能把package一起指定進(jìn)去唐责,而且MyDate.class必 須在com\util這個(gè)目錄中,因?yàn)檫@個(gè)類定義了package為com.util瘾带。

我們?cè)賮砜磈ava這個(gè)命令妒蔚,這個(gè)命令的語(yǔ)法是這樣的:

java [選項(xiàng)] 類 [參數(shù)]

比如說以上面的例子,我們假設(shè)App這個(gè)類位于com.app這個(gè)package中月弛,它的存放目錄是:d:\dev\myapp\com\app\App.class肴盏,那么我們?cè)撊绾芜\(yùn)行這個(gè)類呢?命令如下:

java -classpath d:\dev\myapp;d:\mylib com.app.App

從命令中我們可以看到帽衙,在classpath后面我們指定兩個(gè)目錄菜皂,分別是App這個(gè)類的package所在的目錄和MyDate這個(gè)類的package 所在的目錄,這里的類路徑要給定的是要運(yùn)行的類和這個(gè)類用到的所有類的package所在的目錄厉萝,多個(gè)目錄之間用分號(hào)隔離開來恍飘,最后指定要運(yùn)行的類的時(shí)候 必須加上package。

如果我們?cè)谙到y(tǒng)環(huán)境變量中設(shè)置了CLASSPATH的話谴垫,在命令行中通過 java運(yùn)行的時(shí)候如果再不指定CLASSPATH參數(shù)章母,那么就會(huì)導(dǎo)致java虛擬機(jī)只是按照CLASSPATH環(huán)境變量中的目錄搜索類,而不在你的當(dāng)前 目錄下搜索類翩剪,結(jié)果自然會(huì)出現(xiàn)Exception in thread "main" java.lang.NoClassDefFoundError乳怎,所以當(dāng)你看到這個(gè)錯(cuò)誤的時(shí)候請(qǐng)查看一下你的系統(tǒng)環(huán)境變量,如果沒有設(shè)置 CLASSPATH前弯,那么在檢查一下你的當(dāng)前目錄蚪缀。為了確保萬(wàn)無一失,按照上面講述的例子進(jìn)行操作是不會(huì)發(fā)生任何錯(cuò)誤恕出。

叔叔出品询枚,必為精品。
吶浙巫,祝大家寫代碼愉快金蜀,我是程序媛刷后,我為自己代言hhh

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市渊抄,隨后出現(xiàn)的幾起案子惠险,更是在濱河造成了極大的恐慌,老刑警劉巖抒线,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件班巩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嘶炭,警方通過查閱死者的電腦和手機(jī)抱慌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眨猎,“玉大人抑进,你說我怎么就攤上這事∷悖” “怎么了寺渗?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)兰迫。 經(jīng)常有香客問我信殊,道長(zhǎng),這世上最難降的妖魔是什么汁果? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任涡拘,我火速辦了婚禮,結(jié)果婚禮上据德,老公的妹妹穿的比我還像新娘鳄乏。我一直安慰自己,他們只是感情好棘利,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布橱野。 她就那樣靜靜地躺著,像睡著了一般善玫。 火紅的嫁衣襯著肌膚如雪水援。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天蝌焚,我揣著相機(jī)與錄音裹唆,去河邊找鬼。 笑死只洒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的劳坑。 我是一名探鬼主播毕谴,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了涝开?” 一聲冷哼從身側(cè)響起循帐,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舀武,沒想到半個(gè)月后拄养,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡银舱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年瘪匿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寻馏。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棋弥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诚欠,到底是詐尸還是另有隱情顽染,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布轰绵,位于F島的核電站粉寞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏左腔。R本人自食惡果不足惜仁锯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翔悠。 院中可真熱鬧业崖,春花似錦、人聲如沸蓄愁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撮抓。三九已至妇斤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丹拯,已是汗流浹背站超。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乖酬,地道東北人死相。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像咬像,于是被迫代替她去往敵國(guó)和親算撮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子生宛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容