Java 類路徑
Java 類路徑告訴 java 解釋器和 javac 編譯器去哪里找它們要執(zhí)行或?qū)氲念?。類(您可能注意到的那?*.class 文件)可以存儲(chǔ)在目錄或 jar 文件中,或者存儲(chǔ)在兩者的組合中,但是只有在它們位于類路徑中的某個(gè)地方時(shí),Java 編譯器或解釋器才可以找到它們。
在 Windows 中,類路徑中的多個(gè)項(xiàng)是用分號(hào)分隔( ;)的,而在 UNIX 中,這些項(xiàng)是用冒號(hào)分隔( :)的。在以下實(shí)例中,類路徑中包括兩個(gè) Cloudscape jar 文件( cs.jar 和 cstools.jar ),以及一個(gè)存儲(chǔ) *.class 文件的目錄位置( myDevDir ):
Windows 類路徑:
c:\Cloudscape_10.0\lib\cs.jar;c:\Cloudscape_10.0\lib\cstools.jar;c:\myPath\myDevDir
UNIX 類路徑:
/Cloudscape_10.0/lib/cs.jar:/Cloudscape_10.0/lib/cstools.jar:/myPath/myDevDir
本文中的其余實(shí)例使用的都是 Windows 語(yǔ)法,因此,如果您是在 UNIX 機(jī)器上,那么需要對(duì)語(yǔ)法進(jìn)行相應(yīng)的調(diào)整。
設(shè)置 Java 類路徑
有三種方式設(shè)置 Java 類路徑:
1.永久地,通過(guò)在系統(tǒng)級(jí)上設(shè)置 CLASSPATH 環(huán)境變量來(lái)實(shí)現(xiàn)。
使用控制面板的系統(tǒng)設(shè)置來(lái)添加名為 CLASSPATH 的新變量,從而永久性地設(shè)置 Windows 環(huán)境變量。
UNIX 用戶可以通過(guò)向 .profile 或 .cshrc 文件添加 CLASSPATH 變量來(lái)永久設(shè)置類路徑。
2.臨時(shí)地,通過(guò)在命令窗口或 shell 中設(shè)置 CLASSPATH 環(huán)境變量來(lái)實(shí)現(xiàn)。
在 Windows 命令窗口中臨時(shí)設(shè)置 CLASSPATH
C:\>set CLASSPATH=%CLOUDSCAPE_INSTALL%\lib\cs.jar;.;
如果是臨時(shí)設(shè)置類路徑,那么每次打開(kāi)新的命令窗口時(shí),都需要再次設(shè)置它。
3.在運(yùn)行時(shí)進(jìn)行,每次啟動(dòng) Java 應(yīng)用程序和 JVM,都要指定類路徑。
運(yùn)行時(shí)使用 -cp 選項(xiàng)來(lái)指定類路徑,這里的運(yùn)行時(shí)是指啟動(dòng)應(yīng)用程序和 JVM 時(shí)。
例如
C:\Cloudscape_10.0\demo\programs\simple>java -cp %CLOUDSCAPE_INSTALL%\lib\cs.jar; SimpleApp
檢測(cè)問(wèn)題
常見(jiàn)類路徑錯(cuò)誤
主要有兩種類型的類路徑問(wèn)題。第一類問(wèn)題發(fā)生在沒(méi)有從類路徑中找到您試圖使用的 Java 類時(shí),此時(shí),它拋出一個(gè) java.lang.ClassNotFoundException 異常。第二類問(wèn)題發(fā)生在找到了您正試圖使用的類,但沒(méi)有找到它所導(dǎo)入的某個(gè)類時(shí)。本例中,在編譯時(shí)顯示了所導(dǎo)入的類,但在運(yùn)行時(shí),所導(dǎo)入的類沒(méi)有包含在類路徑中。這將拋出一個(gè) java.lang.NoClassDefFoundError 異常。還有另一種考慮 NoClassDefFoundError 的方式,也就是說(shuō),在編譯當(dāng)前執(zhí)行的類時(shí),所搜索的類定義是存在的,但在運(yùn)行時(shí)卻再也無(wú)法找到該定義了
如何可以解決這類問(wèn)題呢?首先,檢查類路徑,驗(yàn)證庫(kù)是否真正位于您認(rèn)為的地方。例如,在 Windows 中使用該命令來(lái)輸出類路徑:
C:\my_dir>echo %CLASSPATH%
c:\Cloudscape_10.0\lib\cs.jar;c:\Cloudscape_10.0\lib\cstools.jar
然后,在 CLASSPATH 變量中查看每個(gè)路徑,并用 dir (Windows)或 ls (UNIX)命令查看這些文件是否存在。
如果不知道類位于哪個(gè) jar 文件中,可以用以下命令來(lái)檢查:
jar -tvf cs.jar | more
該命令產(chǎn)生許多輸出。如果正使用 Linux 或 Unix,或者在 Windows 中使用 UNIX 使用程序,那么您可以用 grep 篩選您所查找的類。例如,以下命令將查找 com.ihost.cs.tools.sysinfo 類:
C:\Cloudscape_10.0\lib>jar -tvf cs.jar | grep -i com.ihost.cs.tools.sysinfo
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。