1. 程式人生 > >java命令cp引數

java命令cp引數

cp引數就是classpath

java -cp ".;dir/;dir/a.jar;dir/b.jar" Main

從java1.6開始,cp引數支援萬用字元匹配jar檔案。需要注意兩點:

  1. 用引號"
  2. *,而不是*.jar

Windows:

java -cp "Test.jar;lib/*" my.package.MainClass

Linux:

java -cp "Test.jar:lib/*" my.package.MainClass

若不支援萬用字元,bash shell支援用以下方式:

java -cp $(echo lib/*.jar |
tr ' ' ':')

其中先執行$()括號中的命令echo lib/*.jar | tr ' ' ':',然後把$(echo lib/*.jar | tr ' ' ':')部分替換為命令返回的字串,再執行替換後的java命令。
tr ' ' ':'會把空格替換為:

注意:

  • -cp "foo/*"只表示foo目錄下的jar,不包括foo下的class,若要包括則用-cp "foo;foo/*"-cp "foo/*;foo",這裡的順序會決定是先載入jar還是class。
  • foo/*不會遞迴載入foo下子目錄的jar。
  • foo/*載入foo目錄下的jar順序不是固定的,所以程式不應該依賴固定的順序。若需要依賴則用列舉方式而不是萬用字元方式新增。
  • manifest.mf中的Class-Path不支援萬用字元。