寫法:
java -cp .;myClass.jar packname.mainclassname
-cp 參數後面是類路徑,是指定給解譯器到哪裡找到你的.class檔案,
classpath中的jar檔案能使用萬用字元,如果是多個jar檔案,要一個一個地羅列出來,從某種意義上說jar檔案也就是路徑。
要指定各個JAR檔案具體的存放路徑,相同路徑有多個可使用萬用字元
java -cp .;c:/classes/myClass.jar;d:/classes/*.jar packname.mainclassname
packname.mainclassname為包含main方法的完全限定類名,如果在classpath中有多個還有main方法的類,通過此命令可以方便選定程式的入口。
1.jar -cp lib/referenced.jar -jar myworks.jar會執行報錯,原因如下:
我們使用-jar選項的話java.exe會忽略-cp,-classpath,以及環境變數CLASSPATH的參數。
解決方案一:
不要使用-jar選項,直接調用含有main方法的class檔案,這樣-cp,-classpath以及環境變數裡的CLASSPATH指定的參數就都能使用到了。
java -classpath ./lib/junit.jar:. test/Test1
解決方案二:
繼續使用-jar選項,但是在MAINFEST.MF檔案中指定引用到jar檔案.
Class-Path: myplace/myjar.jar myplace/other.jar jardir/
另外說明一點:這個問題可能有些人遇不到,因為Java的版本不同的原因,我在Sun的JDK和IBM 1.5的JDK都遇到了這個問題,但是對於 IBM 1.4的JDK卻沒有類似問題
2. 批量載入包的方法
(一)java命令引入jar時可以-cp參數,但時-cp不能用萬用字元(多個jar時要一個個寫,不能*.jar),通常的jar都在同一目錄,且多於1個。前些日子剛剛發現一個參數-Djava.ext.dirs~
如:java -Djava.ext.dirs=lib MyClass 【同樣的weblogic中就有這樣的參數:-Dweblogic.ext.dirs=$BEA_HOME/patch_weblogic920/profiles/default/sysext_manifest_classpath】
(二)通過Unix shell設定CLASSPATH方式載入(shell實在是方便)
CLASSPATH=`find ../lib -name *.jar|xargs|sed "s/ /:/g"`
CLASSPATH=".:$CLASSPATH
(三)cp 參數後面是類路徑,是指定給解譯器到哪裡找到你的.class檔案。使用java -cp命令可以調用一個其他目錄下的帶有main函數的類。格式為java -cp class檔案的路徑,下面的例子採用的相對路徑。
String commandLine = "java -cp "+ "..\\kwicByPipeServer\\bin KWIC";
Process p = Runtime.getRuntime().exec(commandLine);
這樣就可以調用了。
(四)在Windows中可以加入到環境參數之中的CLASSPATH變數之中;