說明一
java -cp .;c:\dir1\lib.jar Test
-cp 和 -classpath 一樣,是指定類運作所依賴其他類的路徑,通常是類庫,jar包之類,需要全路徑到jar包,window上分号“;”
分隔,linux上是分号“:”分隔。不支援通配符,需要列出所有jar包,用一點“.”代表目前路徑。
雖然現在都有eclipse之類的IDE了,但有時候後會手工編譯和運作一些程式,很多人包括多年開發經驗的人都不知道怎麼在指令行參
數運作類。有點杯具……
使用範例:
java -cp …\lib\hsqldb.jar org.hsqldb.Server -database mydb
或
java -cp …/lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 mydb
1 Java代碼
2 java -jar minusyhd.jar
3 Manifest-Version: 1.0
4 Main-Class: minusyhd.MinusYHD
5 Class-Path: jconn4.jar
-cp 參數後面是類路徑,是指定給解釋器到哪裡找到你的.class檔案,
寫法:
java -cp .;myClass.jar packname.mainclassname
classpath中的jar檔案能使用通配符,如果是多個jar檔案,要一個一個地羅列出來,從某種意義上說jar檔案也就是路徑。
要指定各個JAR檔案具體的存放路徑,相同路徑有多個可使用通配符
java -cp .;c:\classes\myClass.jar;d:\classes\*.jar packname.mainclassname
bat檔案寫法:
Java代碼
java -cp MinusYHD.jar minusyhd.MinusYHD > minusyhed.log
exit
”> minusyhed.log“ 指定System.out輸出檔案名
說明二
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 ’ ’ ‘:’)
其中先執行KaTeX parse error: Double superscript at position 31: …b/*.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不支援通配符。