1. 程式人生 > >javac和java -cp選項情景總結

javac和java -cp選項情景總結

轉自:http://blog.sina.com.cn/s/blog_4a1f59bf0100m1lg.html

1.使用配置好的$CLASSPATH,在編譯的時候,如果當前的$CLASSPATH包含了所需要的所有類庫,則不需要包含其它的值。只需使用java ***.java,則當前目錄下會生成一個***.class,如果在***.java中使用了package a.b.c;但是簡單的javac 只能在當前目錄生成***.class檔案,此時,如果想執行的話,需要在當前目錄建立a/b/c/***.class的結構,然後執行java a.b.c.abc

如果此時你使用cd a,進入a目錄,則我們需要使用java -cp ../ a.b.c.abc,這樣才會找到class檔案。


2.Java編譯需要使用到其它的jar的時候,則需要指定全部jar路徑,不能使用資料夾包含所有形式,使用資料夾class或者普通檔案的形式,javac -cp $CLASSPATH:xxx/xxx/xxx.jar:xxx/xxx/xxx.jar xxx.java

3. 在執行的時候,使用java -cp classpath 的使用方法和javac基本相同,但是需要注意的時候,當我們需要將非$CLASSPATH環境變數包含的值的時候,需要指出當前class所在的位置,這個位置是要考慮package之後的資料夾的位置,例如上面的a/b/c/abc.class,一定要將目錄指定到a所在的目錄層次。