整理自竹師風之坊java精華區(bbs://140.126.22.6)
設定
path 是告訴系統, 執行檔程式位於什麼地方
主要是在執行 javac 跟 java 這兩個程式時使用的
也就是當你在命令列打入 javac
xxx.java 和 java xxx 時
系統要去那裡找 javac 和 java 這兩個執行檔
設定 classpath 是告訴
Java
要使用或執行的 class 檔所在的路徑
比如說: 我們輸入 "java A" 命令 要求 Java 執行 A.class
這個類別檔時
Java 會由 classpath 所設定的路徑位置開始尋找 A.class
所以如果你沒有設定, 那 Java
就會跟你說他找不到
就算你是在 A.class 所在的路徑執行這個命令
也要在 classpath 裡面跟 Java 說 要到目前所在的路徑尋找
A.class
否則 Java 還是找不到的
另外 如果 A.class 裡面用到 B.class 時
在 classpath 設定中也要包含
B.class 所在的路徑
在較新版本的 SDK 中
並不需要在 classpath 裡面設定 SDK 原有的 class 檔或 jar
檔路徑
程式已經將路徑預設好了
你只需要設定額外的類別檔路徑就可以了
設定如下:
在 Windows 95/98
平台中
設定的方法為 用文字編輯器 (如小作家, notepad 等等)
編輯
c:\autoexec.bat
在裡面加入
SET PATH=C:\jdk\bin\
SET
CLASSPATH=.;C:\java\class\;C:\java\jar\b.jar
如果這個檔案裡面原來就有 SET PATH 或 SET
CLASSPATH
那就將路徑加在原來那行後面 並用 ; 隔開
( 在 J2SDK1.3 版之後的 Windows 版本
如果
CLASSPATH 沒有設定的話
Java 會預設為 CLASSPATH=.;
如果你有設定
則以設定的為主)
如果不設定
則可以用
c:\> c:\jdk\bin\java -cp
c:\java\class\;c:\java\jar\b.class;c:\java\test\
xxx
來執行
設定好之後就可以簡化成
c:\> java xxx
在 Linux
底下
若路徑為
/usr/local/java/bin/java
/usr/local/java/bin/javac
/usr/local/class/a.class
/usr/local/jar/b.jar
/home/test/java/xxx.java
/home/test/java/xxx.class
則需在
/etc/profile (所有帳號共用)
加入
PATH=/usr/local/bin/:$PATH
CLASSPATH=./:/usr/local/class/:/usr/local/jar/b.jar
export
PATH CLASSPATH
PS:
1. 以上設定好之後, 最好重新開機, 或重新登入,
反正就是要系統重新執行這個檔案
2.
= 號兩側不可以有空白
3. Java 是會區分大小寫的, 不要把類別檔的大小寫 寫錯了
4. 設定中的 .
是代表使用者目前所在目錄
安裝其他套件之 ClassPath 設定
一般來說 當下載新的套件時
需要將新套件的路徑設定到
CLASSPATH 中
比如說
下載 JavaMail 裡面有 mail.jar 放在
c:\javamail\mail.jar 或是
/usr/local/javamail/mail.jar
那原來的 CLASSPATH 後面就要加上
;c:\javamail\mail.jar
或是 :/usr/local/javamail/mail.jar
還有要注意的是
如果安裝的是 server
如 JServ 或
Tomcat 這一類的程式
那也要把原來 classpath 設定的路徑
寫入到 Jserv 或 Tomcat 這些程式的設定檔中
這樣這些
server 才知道要去哪裡找 class
轉錄自java連線版
作者: TAHO (癡人) 看板:
java
標題: PATH & CLASSPATH
時間: Mon Jan 28 23:18:06
2002
看來這個問題又開始出現了
如果有用過 DOS 系統的人 應該可以瞭解 PATH 是在幹嘛的
這個 PATH 並不是給
Java 用的
早在沒有 Windows 的 DOS 時代 就有這個東西了.....
因為 DOS 沒有所謂的 "捷徑"
所以如果你要執行程式
那你必須給他 "完整路徑"
除非那個程式是在使用者的正處於的目錄
比如說
c:\windows\commands\edit.exe
如果你在
C:\windows\commands>
edit
這樣當然可以
如果你是在
C:\> edit
他就會跟你說 找不到這個 edit.exe
因為這檔案不在 C:\
底下
你也不能期望電腦會把你所有硬碟目錄全部都搜尋一遍 找出可能的檔案
如果這樣
那過不了多久你的硬碟可以就開始壞軌了
所以你必須打完整路徑
C:>
c:\windows\commands\edit
但是每次都這樣打實在太麻煩∼∼
所以就發明了一個 "系統變數",也就是 OS
會去使用的設定
只要這樣設定 PATH=C:\windows\commands\
那不論你在哪裡打
edit,他會先去找目前目錄底下有沒有這個程式
如果沒有 就去 PATH 的路徑找....
當然 不只有 edit,只要是打任何指令
在目前目錄底下找不到的
他就會去 PATH 設定的地方找
所以你瞭解為什麼要設定到 JDK 的 bin 目錄底下嗎?
因為 java.exe
跟 javac.exe 等等指令都在這目錄底下
所以你安裝完 JDK 之後有三種選擇可以執行命令
1. 直接到 javac.exe java.exe
所在的目錄底下去打指令 (麻煩...)
2. 每次打命令都打完整路徑 (通常很長....)
3. 設定系統變數 PATH 到 JDK 的 bin
目錄
同樣的所謂的 JVM 就好像是 OS 上面再啟動一個 OS
對 JVM 來說 CLASSPATH 就好像是對 OS 來說的
PATH
JVM 是由 java.exe 這個程式啟動的
而且別忘了 java.exe 並不是在使用者的路徑下
所以他會去 java.exe
所在的目錄底下去找 .class 檔
除非你的 .class 檔放在跟 java.exe 同一個目錄
否則他是找不到 .class
在哪裡的....
所以我們要設定一個路徑 讓 JVM 可以去這個路徑尋找你要他執行的 .class
所以你一樣有三種方法可以執行
1.
把所有的 .class 都放到 java.exe 的相對目錄底下 ( 很難管理... )
2. 每次都打完整路徑, 也就是使用 -cp 的選項
比如
java -cp .;c:\myclass\ Test
(其中那個句點 . 表示使用者打這個指令時 所在的目錄)
(常打的話很煩 ...
)
3. 設定系統變數 CLASSPATH 到你的 class 的位置
至於系統變數怎麼設定 那要看你在那個平台 依據平台的設定
(
當然 系統變數不只這兩個, 就算你都沒有去設定
通常安裝完 OS, OS 就會預設一堆系統變數
你只是多手動的加了兩個
)
當然你都不設定也是可以∼∼
只是很麻煩
比如說你安裝的路徑是
C:\JDK1.3.1\
D:\myclass\Test.class
其中
Test 用到 E:\extclass\Util.class
那你每次執行要打
c:\JDK1.3.1\bin\java -cp
e:\extclass;d:\myclass Test
如果你不嫌煩的話 不用設定也是無所謂啦
留言列表