Java class path
最近遇到了兩個(gè)問(wèn)題
- 設(shè)置 Atom 的 auto complete 的時(shí)候發(fā)現(xiàn)需要設(shè)置 class path ,但是完全沒(méi)弄懂class path 是什么意思.
- 正在學(xué)習(xí)的 algorithm 課程需要導(dǎo)入第三方包,以前都是用 intellij 導(dǎo)入,不知道第三方包的導(dǎo)入機(jī)制是怎樣的.
概覽
- Class-path 的作用是告訴 Java 去 哪里 找到代碼中導(dǎo)入的 class.
- Java 虛擬機(jī)中的尋找 class 順序
- bootstrap classes 引導(dǎo)程序:那些 Java platform 的基本 class 以及程序中需要使用的 private classes.
- extension classes: 在 JRE 或者 JDK 中的擴(kuò)展 class, 路徑一般為 jre/lib/ext/.
- 用戶(hù)自定義的 packages 和 library.
- 只有 JDK standard API 和 extension package 不需要設(shè)置路徑,用戶(hù)自定義的 packages 和 library 必須在 command line 裡面設(shè)置路徑,或者在 manifest 中設(shè)置.
為 Java 程序設(shè)置路徑
假設(shè)擁有一個(gè)叫做 org.mypackage 的包,裡面包含以下 class
- HelloWorld(main class)
- SupportClass
- UtilClass
所以如果要調(diào)用這個(gè)包裡面的 class 需要在 command line 裡面寫(xiě)上 java -cp /home/user/myprogram org.mypackage.HelloWorld
通過(guò) environment variable 環(huán)境變量設(shè)置路徑
對(duì)於上面的例子,在環(huán)境變量中應(yīng)該如下設(shè)置
- set CLASSPATH=D:\myprogram
- java org.mypackage.HelloWorld
如果沒(méi)有設(shè)置環(huán)境變量,目前工作路徑就會(huì)作為 CLASSPATH
- 假設(shè)工作路徑是 D:\myprogram
- 我們不需要設(shè)置系統(tǒng)的 CLASSPATH
- 建議在環(huán)境變量中添加 "." ,代表添加當(dāng)前路徑到環(huán)境變量
為 Jar file 設(shè)置路徑
如果在 *D:\myprogram\lib* 中有一個(gè) Jar file 叫做 supportLib.jar.
- 命令行設(shè)置應(yīng)該如下
- java -classpath D:\myprogram;D:\myprogram\lib\supportLib.jar
org.mypackage.HelloWorld - or
set CLASSPATH=D:\myprogram;D:\myprogram\lib\supportLib.jar
java org.mypackage.HelloWorld
- java -classpath D:\myprogram;D:\myprogram\lib\supportLib.jar