java命令cp引數
阿新 • • 發佈:2018-12-06
cp引數就是classpath
java -cp ".;dir/;dir/a.jar;dir/b.jar" Main
從java1.6開始,cp引數支援萬用字元匹配jar檔案。需要注意兩點:
- 用引號
"
- 用
*
,而不是*.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不支援萬用字元。