2008年10月16日 星期四

[Java]Path & ClassPath

設定 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精華區(bbs://140.126.22.6)

沒有留言:

張貼留言