1. 程式人生 > >jar包生成及使用

jar包生成及使用

jar包就是別人已經寫好的一些類,然後將這些類進行打包,你可以將這些jar包引入你的專案中,然後就可以直接使用這些jar包中的類和屬性以及方法。

JAR(Java ARchive)是將一系列檔案合併到單個壓縮檔案裡,就象Zip那樣。

要生成jar包,首先要編譯成class檔案。

而編譯時要在正確目錄下執行javac。否則會找不到程式包。我們的java檔案一般首行是包的名字,其實就是資料夾結構。

例如 package src;那麼我們編譯時的目錄就應該在src的上一級。

編譯時我們對著主類使用javac,例如javac B.java那麼B用到的類都將會被編譯,沒用到的不會被編譯,哪怕是在同一級目錄下。

如果你的類用到了其他jar包,那麼應該使用:

javac -cp BB.jar LL.java

BB.jar是你使用的jar包。這樣才能編譯通過。生成了LL.class檔案,但是沒法單獨執行LL.class。這種情況看下文。

生成jar包的指令:

jar -cvf BB.jar src/* B.class

這樣會生成一個BB的jar包,裡面的內容是src資料夾下所有檔案,包括src資料夾,包括B.class。如果有其他檔案,就接著寫在指令後面。

執行jar包:

java -cp BB.jar B

執行BB.jar包,主類是B,也就是說B一定是有入口函式的。如果jar包裡的MANIFEST.MF檔案聲明瞭主類,那麼可以不用寫B。

-cp 和 -classpath 是一個意思。如何用自己的宣告檔案,那麼打jar包時,請看jar指令幫助說明。

如果你的類用到了其他jar包

舉例:上面提到了LL.class檔案生成了,然後我們打成LL.jar包,這個jar包class是依賴了BB.jar包,那麼應該

java -cp BB.jar;LL.jar LL

LL是主類,就是入口。

附註:(轉)

javac的編譯單位其實就是單個的java檔案,為了達到同時編譯多個java檔案的目的,可以將所需編譯的java檔案路徑儲存在一個txt中,比如sourcelist.txt,以換行為分隔符(這個過程稱為類檔案註冊)。這些java檔案沒有彼此聯絡的必要,它們可以是隸屬不同的包、在不同的資料夾下(當然建議包路徑相同的java類檔案放在同一檔案路徑下),javac命令只會一行一行地讀取其中的記錄,作為一個單位進行類編譯。
舉例說明。假設你的這個包放在src資料夾下,src的父目錄為project,sourcelist.txt也事先新建在project資料夾下。首先將這個包中你需要編譯的java檔案相對於src的路徑(如src\com\test\Test.java)註冊到sourcelist.txt檔案中;接著在project資料夾中新建一個bin資料夾(或者
class檔案
夾,命名隨你樂意取),用以編譯後class檔案的放置(這個配以javac命令中-d選項去理解);如果還有其他類庫(如jxl.jar或者mysql.jar),建議在project目錄下新建一個lib(同樣命名不限)資料夾,然後複製到該資料夾下(配以-classpath選項理解);最後檢查上述準備工作都完成,win + R、輸入cmd都不用講,現在在cmd中用cd命令切換到project目錄,然後輸入命令: javac -classpath lib/jxl.jar -sourcepath src @sourcelist.txt -d bin 現在就很好理解了。-d選項就是destination的意思,即生成class檔案被送到該選項後面的bin資料夾;-classpath就是將你要用到的jar包註冊到類載入路徑中;-sourcepath就是告訴javac命令去哪裡找類檔案。 最後呢,為了方便,可以在project資料夾下新建一個bat檔案,並輸入以下內容: javac -classpath lib/jxl.jar -sourcepath src @sourcelist.txt -d bin @pause 這樣每次直接點選即可,而你需要編譯其他包的或者其他java檔案,直接在sourcelist.txt檔案中新增或修改。這其實也是一種“弱耦合”、模組化的表現。