Java運行時命令列的寫法

來源:互聯網
上載者:User

寫法:
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變數之中;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.