javac命令參數(shù)(-classpath和-sourcepath)

先看下定義:

  • -classpath 類路徑
    設(shè)置用戶類路徑辛辨,它將覆蓋 CLASSPATH 環(huán)境變量中的用戶類路徑。若既未指定 CLASSPATH 又未指定 -classpath励背,則用戶類路徑由當(dāng)前目錄構(gòu)成春霍。有關(guān)詳細信息,請參閱設(shè)置類路徑叶眉。

    若未指定 -sourcepath 選項址儒,則將在用戶類路徑中查找類文件和源文件芹枷。

  • -sourcepath 源路徑
    指定用以查找類或接口定義的源代碼路徑。與用戶類路徑一樣莲趣,源路徑項用分號 (:) 進行分隔鸳慈,它們可以是目錄、JAR 歸檔文件或 ZIP 歸檔文件喧伞。如果使用包走芋,那么目錄或歸檔文件中的本地路徑名必須反映包名。

    注意:通過類路徑查找的類潘鲫,如果找到了其源文件翁逞,則可能會自動被重新編譯。

這里-classpath和-sourcepath指定的都是被編譯的源文件需要調(diào)用另外的用戶自定義類或源文件的位置溉仑。
可以理解為

  1. -classpath用來指定搜索類文件(*.class文件)的路徑挖函,-sourcepath用來指定搜索源文件(*.java文件)的路徑
  2. 如果未指定-sourcepath,那邊將會在classpath指定的路徑中查找類文件(*.class文件)和源文件(*.java文件)
  3. 如果找到了源文件(*.java文件)浊竟,可能會重新生成類文件(*.class文件)

下面我們來驗證下第一點(同時指定-classpath和-sourcepath參數(shù)):

新建一個HelloWorld.java文件

package a.b;
public class HelloWorld{
 public static void main(String[] args){
  System.out.println("Hello World!");
 }
}

在命令行執(zhí)行
$ javac -verbose -classpath ~ -sourcepath ~/Downloads HelloWorld.java
-verbose參數(shù)可以幫我們輸出詳細的編譯信息挪圾,在命令中我們指定classpath為,sourcepath為/Downloads逐沙。

javacHelloWorld.png

如上圖可以看到:類文件的搜索路徑包含/User/gaozengrong,源文件的搜索路徑為/User/gaozengrong/Downloads,就如我們再命令中指定的一樣(“~”符號在linux和mac等系統(tǒng)中代表用戶目錄)哲思。

驗證第二點(只指定-classpath文件)

在命令行直接執(zhí)行
$ javac -verbose -classpath ~ HelloWorld.java

只指定classpath.png

顯而易見,類文件的搜索路徑和源文件的搜索路徑均為/User/gaozengrong

驗證第三點(源文件是否會被重新編譯)

我們新建兩個源文件分別如下:

package a.b;  
import c.d.T;  
public class TestT {  
   public static void main(String[] args) {  
    T t = new T();  
    t.p();  
  }  
} 
package c.d;  
public class T {  
   public void p(){  
    System.out.println("class:T");  
   }  
} 

目錄結(jié)構(gòu)為:

src文件夾目錄結(jié)構(gòu).png

在用戶目錄下編譯TestT.java文件,
javac -verbose -classpath src -sourcepath src src/a/b/TestT.java
第一次編譯TestT源文件.png

如箭頭所指吩案,由于TestT類中引用了T類棚赔,在編譯過程中會加載T.java文件并解析編譯。(至于為何先生成TestT.class文件再生成T.class文件徘郭,我猜測是T.java文件解析完成后靠益,就可以直接編譯生成TestT.class文件)

我們再運行一次編譯命令
javac -verbose -classpath src -sourcepath src src/a/b/TestT.java

第二次編譯TestT源文件.png

此時由于已經(jīng)存在T.class類文件,編譯的時候直接加載了T.class文件残揉,而沒有加載T.java文件再重新進行自動編譯胧后。

我們對T.java文件稍加修改,只添加一條注釋即可抱环,修改后的T.java文件為

package c.d;  
public class T {  
   public void p(){  
    //稍加修改
    System.out.println("class:T");  
   }  
}  

此時的src文件夾的目錄結(jié)構(gòu):

編譯后的src文件夾目錄結(jié)構(gòu).png

我們再運行一次編譯命令
javac -verbose -classpath src -sourcepath src src/a/b/TestT.java
重新自動編譯了T源文件.png

可以看到壳快,T.java文件被重新加載并進行了編譯。

可以得出結(jié)論:源文件是否被重新自動編譯取決于源文件是否已被修改镇草。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眶痰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子梯啤,更是在濱河造成了極大的恐慌竖伯,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異七婴,居然都是意外死亡祟偷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門打厘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來修肠,“玉大人,你說我怎么就攤上這事婚惫。” “怎么了魂爪?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵先舷,是天一觀的道長。 經(jīng)常有香客問我滓侍,道長蒋川,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任撩笆,我火速辦了婚禮桶略,結(jié)果婚禮上淘讥,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好颅筋,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酪刀,像睡著了一般眨猎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弥姻,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天南片,我揣著相機與錄音,去河邊找鬼庭敦。 笑死疼进,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秧廉。 我是一名探鬼主播伞广,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疼电!你這毒婦竟也來了赔癌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤澜沟,失蹤者是張志新(化名)和其女友劉穎灾票,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茫虽,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡刊苍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年既们,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片正什。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡啥纸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婴氮,到底是詐尸還是另有隱情斯棒,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布主经,位于F島的核電站荣暮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏罩驻。R本人自食惡果不足惜穗酥,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惠遏。 院中可真熱鬧砾跃,春花似錦、人聲如沸节吮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽透绩。三九已至厨内,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渺贤,已是汗流浹背雏胃。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留志鞍,地道東北人瞭亮。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像固棚,于是被迫代替她去往敵國和親统翩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容