1. 程式人生 > >【轉】命令列執行main方法

【轉】命令列執行main方法

原文:http://www.cnblogs.com/JeffChen/archive/2008/01/15/1039708.html

javac和java命令列中的-classpath選項
這是個很基礎的問題,但是因為基本上都是用現有的IDE工具 來開發java程式,所以很少有人意識到這一點。
javac
-classpath,設定要搜尋類的路徑,可以是目錄,jar檔案,zip檔案(裡面都是class檔案),會覆蓋掉所有在CLASSPATH裡面的設定。
-sourcepath, 設定要搜尋編譯所需java 檔案的路徑,可以是目錄,jar檔案,zip檔案(裡面都是java檔案)。
所以一個完整的javac命令列應該是這樣的,
假設abc.java在路徑c:\src裡面,在任何的目錄的都可以執行以下命令來編譯。
javac -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip -sourcepath c:\source\project1\src;c:\source\project2 \lib\src.jar;c:\source\project3\lib\src.zip c:\src\abc.java

表示編譯需要c:\classed下面的class檔案,c:\jar\abc.jar裡面的class檔案,c:\zip\abc.zip裡面的class檔案
還需要c:\source\project1\src下面的原始檔,c:\source\project2 \lib\src.jar裡面的原始檔,c:\source\project3\lib\src.zip裡面的原始檔,
注意:jar,zip裡面的原始檔不會有什麼改動,目錄下的原始檔,有可能會被重新編譯。
java
-classpath, 設定要搜尋的類的路徑,可以是目錄,jar檔案,zip檔案(裡面都是class檔案),會覆蓋掉所有的CLASSPATH的設定。
由於所要執行的類也是要搜尋的類的一部分,所以一定要把這個類的路徑也放到-classpath的設定裡面。
表現在,在要執行的類的路徑裡面執行java時,一定要新增上點號(.)標示本目錄也要搜尋。

假設abc.class在路徑c:\src裡面
可以在任何路徑下執行以下命令
java -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;c:\src abc

問題:如果main.class屬於c:\jar\abc.jar,並且在com.cnblogs.jeffchen這個包裡,那麼執行java -classpath c:\classes;c:\jar\abc.jar;c:\zip\abc.zip;com.cnblogs.jeffchen.main即可, 但是如果classpath中包含多個jar包呢?並且其他jar包中也有com.cnblogs.jeffchen會發生什麼情況?錯誤?

在windows下,
檔案路徑的分割符為反斜槓 \
類或者java檔案列表的分割符為分號 ;

在linux下
檔案路徑的分隔符位斜槓 /
類或者java檔案列表的分隔符為冒號 :

一個linux下編譯和執行的例子
/usr/local/java/bin/javac -classpath /tmp/javatest/lib/mail-1.3.3.jar -d /tmp/javatest/bin/ /tmp/javatest/src/jp/co/realseed/Capability.java

/usr/local/java/bin/java -classpath /tmp/javatest/lib/mail-1.3.3.jar:/tmp/javatest/bin/ jp.co.realseed.Capability

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> 閱讀(949) | 評論(0) | 轉發(0) | 給主人留下些什麼吧!~~ 評論熱議