用了 Java 好一陣子了,一直是在既有的環境裡面執行,

用的也是 java servlet 在伺服器端跑,

如今想把寫好的程式安裝在另一台PC電腦上面,突然遇到好多問題.....

還有也都一一找到解答...

甚至有到今天(大概快兩年了吧)才真正搞懂 Path 與 ClassPath 的差異

或者說...底下這篇文章到底在說什麼,而我又該怎麼用...

我終於開竅啦...(見笑囉)

來源:JavaWorld網站


整理自竹師風之坊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 所在的路徑

(Robert說: 自製或是網路上下載的套件 *.zip / *.jar ,也是放在這裡)

 

在較新版本的 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

創作者介紹
創作者 羅伯特 的頭像
羅伯特

Thinking in Robert

羅伯特 發表在 痞客邦 留言(0) 人氣()