hinking in Java對classpath作用的解釋
Java 解釋器的工作程序如下:
首先,它找到環(huán)境變量CLASSPATH(將Java 或者具有Java 解釋能力的工具——如瀏覽器——安裝到機(jī)器中時,通過操作系統(tǒng)進(jìn)行設(shè)定)。CLASSPATH 包含了一個或多個目錄,它們作為一種特殊的“根”使用,從這里展開對.class 文件的搜索。從那個根開始,解釋器會尋找包名,并將每個點號(句點)替換成一個斜杠,從而生成從CLASSPATH 根開始的一個路徑名(所以package foo.bar.baz 會變成foo\bar\baz 或者foo/bar/baz;具體是正斜杠還是反斜杠由操作系統(tǒng)決定)。隨后將它們連接到一起,成為CLASSPATH 內(nèi)的各個條目(入口)。以后搜索.class 文件時,就可從這些地方開始查找與準(zhǔn)備創(chuàng)建的類名對應(yīng)的名字。此外,它也會搜索一些標(biāo)準(zhǔn)目錄——這些目錄與Java 解釋器駐留的地方有關(guān)。
為進(jìn)一步理解這個問題,下面以我自己的域名為例,它是bruceeckel.com。將其反轉(zhuǎn)過來后,com.bruceeckel 就為我的類創(chuàng)建了獨一無二的全局名稱(com,edu,org,net 等擴(kuò)展名以前在Java 包中都是大寫的,但自Java 1.2 以來,這種情況已發(fā)生了變化?,F(xiàn)在整個包名都是小寫的)。由于決定創(chuàng)建一個名為util 的庫,我可以進(jìn)一步地分割它,所以最后得到的包名如下:package com.bruceeckel.util;
現(xiàn)在,可將這個包名作為下述兩個文件的“命名空間”使用:
//: Vector.java
// Creating a package
package com.bruceeckel.util;
public class Vector {
public Vector() {
System.out.println(
"com.bruceeckel.util.Vector");
}
}
//: List.java
// Creating a package
package com.bruceeckel.util;
public class List {
public List() {
System.out.println(
"com.bruceeckel.util.List");
}
}
這兩個文件都置于我自己系統(tǒng)的一個子目錄中:
C:\DOC\JavaT\com\bruceeckel\util
若通過它往回走,就會發(fā)現(xiàn)包名com.bruceeckel.util,但路徑的第一部分又是什么呢?這是由CLASSPATH
環(huán)境變量決定的。在我的機(jī)器上,它是:
CLASSPATH=.;D:\JAVA \LIB;C:\DOC\JavaT
可以看出,CLASSPATH 里能包含大量備用的搜索路徑。然而,使用JAR 文件時要注意一個問題:必須將JAR
文件的名字置于類路徑里,而不僅僅是它所在的路徑。所以對一個名為grape.jar 的JAR 文件來說,我們的
類路徑需要包括:
CLASSPATH=.;D:\JAVA \LIB;C:\flavors\grape.jar
個人理解說明:其實從上面可以看出,如果你用記事本來寫java程序(在Window下),并用cmd命令窗口中
輸入javac,java命令,如果你的代碼中用到了其它的jar或者你自己的寫的類,但又和你的主程序沒在一個包下,這時你就要在classpath中設(shè)置你要用到的jar或者自己寫的類的路徑,讓Java在編譯器可以找到你要用的東西,如上面例子所示?!≡谖覀冇靡恍┕ぞ邥r,如eclipse中,我們可以把一些Jar包什么的添加進(jìn)來,然后搜索路徑的事工具幫我們做了,所以不用在手動加進(jìn)去,如下圖,eclipse工程中專門有一個文件來記錄classpath
.....................................................................................................................................................
CLASSPATH是什么?它的作用是什么? 它是javac編譯器的一個環(huán)境變量。 它的作用與import、package關(guān)鍵字有關(guān)。 當(dāng)你寫下improt java.util.*時,編譯器面對import關(guān)鍵字時,就知道你要引入java.util這個package中的類;但是編譯器如何知道你把這個package放在哪里了呢?所以你首先得告訴編譯器這個package的所在位置;如何告訴它呢?就是設(shè)置CLASSPATH啦 :) 如果java.util這個package在c:\jdk\ 目錄下,你得把c:\jdk\這個路徑設(shè)置到CLASSPATH中去!當(dāng)編譯器面對import java.util.*這個語句時,它先會查找CLASSPATH所指定的目錄,并檢視子目錄java\util是否存在,然后找出名稱吻合的已編譯文件(.class文件)。如果沒有找到就會報錯! CLASSPATH有點像c\c++編譯器中的INCLUDE路徑的設(shè)置哦,是不是?當(dāng)c\c++編譯器遇到include <iostream>這樣的語句,它是如何運作的?哦,其實道理都差不多!搜索INCLUDE路徑,檢視文件! 當(dāng)你自己開發(fā)一個package時,然后想要用這個package中的類;自然,你也得把這個package所在的目錄設(shè)置到CLASSPATH中去! CLASSPATH的設(shè)定,對JAVA的初學(xué)者而言是一件棘手的事。所以Sun讓JAVA2的JDK更聰明一些。你會發(fā)現(xiàn),在你安裝之后,即使完全沒有設(shè)定CLASSPATH,你仍然能夠編譯基本的JAVA程序,并且加以執(zhí)行。
.....................................................................................................................................................
1. PATH環(huán)境變量。作用是指定命令搜索路徑,在命令行下面執(zhí)行命令如javac編譯java程序時,它會到PATH變量所指定的路徑中查找看是否能找到相應(yīng)的命令程序。我們需要把jdk安裝目錄下的bin目錄增加到現(xiàn)有的PATH變量中,bin目錄中包含經(jīng)常要用到的可執(zhí)行文件如javac/java/javadoc等待,設(shè)置好PATH變量后,就可以在任何目錄下執(zhí)行javac/java等工具了。
2. CLASSPATH環(huán)境變量。作用是指定類搜索路徑,要使用已經(jīng)編寫好的類,前提當(dāng)然是能夠找到它們了,JVM就是通過CLASSPATH來尋找類的.class文件。我們需要把jdk安裝目錄下的lib子目錄中的dt.jar和tools.jar設(shè)置到CLASSPATH中,當(dāng)然,當(dāng)前目錄“.”也必須加入到該變量中。
javac -c 路徑 (可以指定class文件存放目錄)
java -cp 路徑 (可以指定要執(zhí)行的class目錄)
3. JAVA_HOME環(huán)境變量。它指向jdk的安裝目錄,Eclipse/NetBeans/Tomcat等軟件就是通過搜索JAVA_HOME變量來找到并使用安裝好的jdk。
在windows桌面上右擊“我的電腦” —> “屬性” —> “高級” —> “環(huán)境變量”,在“系統(tǒng)變量”里我們可以看到系統(tǒng)的各個環(huán)境變量的值。雙擊某個變量名可以修改變量值,變量值之間用“;”隔開。我們還可以“新建”原先沒有的變量。與jdk有關(guān)的有3個環(huán)境變量;“java_home”,“path”,“classpath”。我的系統(tǒng)中“path”變量已經(jīng)存在,可以直接添加新值(其它變量值不要動,防止其它程序運行異常),其它兩個變量需要新建。
“java_home”,設(shè)置jdk的安裝路徑,比如“e:\java\jdk1.5”,以下簡稱“%java_home%”。
“path”,設(shè)置jdk中各個程序的路徑,“%java_home%\bin;%java_home%\jre\bin;”
“classpath”,設(shè)置java各個類的路徑,“.;%java_home%\lib;%java_home%\lib\tools.jar”。前面的“.”不可少,它代表了我們?yōu)樽约旱膉ava類建立的工作路徑,其它的是jdk自帶的標(biāo)準(zhǔn)類庫路徑。
設(shè)置好環(huán)境變量后按“確定”退出。按“win”+“r”鍵進(jìn)入“運行”窗口,運行“cmd”進(jìn)入DOS窗口,在輸入“javac”后回車,如果有顯示java的幫助信息,就說明環(huán)境變量設(shè)置成功。
classpath= ".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar"
java_home = "C:\Program Files\Java\jdk1.5.0"
path ="%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin "
|
DK安裝與配置圖解
JDK1.7安裝圖解
一、下載JDK1.7
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
1.、首先選中紅色部分,然后從產(chǎn)品列表中選中對應(yīng)系統(tǒng)的jdk版本點擊下載
圖1-1下載信息
二、安裝jdk
1.雙擊“jdk-7u1-windows-i586.exe”可以直接運行程序,如圖所示。
圖1-2 運行起始界面
2、選中要安裝得部分和要安裝的路徑。建議使用默認(rèn)配置。“開發(fā)工具”是必須安裝的,它是JDK的核心,“源代碼”是JDK類庫包的源代碼,建議安裝(很多時候都能用到源代碼)?!肮睯RE”可以選擇不按轉(zhuǎn),因為JDK中包括JRE。這里我選擇默認(rèn)的配置。
圖1-3 選擇安裝路徑
點擊下一步,安裝jdk
圖1-4 安裝進(jìn)度條
3、當(dāng)JDK安裝完成是會提示是否安裝JRE
圖1-5 JRE安裝提示
4、點擊“下一步”安裝JRE
圖1-6 JRE安裝進(jìn)度條
5、靜等進(jìn)度條結(jié)束,結(jié)束之后會提示產(chǎn)品注冊,直接點擊“完成”就行了。
圖1-7 安裝完成
三、配置JDK環(huán)境變量
1、右擊“我的電腦”選擇“屬性”,在選擇“高級”然后選中“環(huán)境變量”。
圖1-8 環(huán)境變量的選擇
2、點擊“環(huán)境變量”。
然后在“系統(tǒng)環(huán)境變量”中,點擊“新建”
3、 “新建”,新建一個名為“JAVA_HOME”的系統(tǒng)環(huán)境變量。其變量的值為JDK安裝根目錄,我的JDK安裝到了C:\Program Files\Java\jdk1.7.0_01。
圖1-10 添加JAVA_HOME環(huán)境變量
4、“新建”(或編輯)一個名為“path”的環(huán)境變量,如果Path變量已經(jīng)存在,則在變量值的最后面追加“;%JAVA_HOME%\bin;”。
圖1-11 編輯Path環(huán)境變量
5、“新建”一個名為“ClassPath”的環(huán)境變量,其值為“%JAVA_HOME%\jre\lib\rt.jar;.;”
圖1-12 新建ClassPath環(huán)境變量
6、在控制臺中輸入“java –version”如果出現(xiàn)如圖所示的java version信息,則表示JDK安裝成功(提示的版本信息可能不對,我安裝了多個JDK)。
圖1-13 JDK安裝提示