2008/07/29

Fat-jar -- 把全部的jar打包成一個可以執行的jar

在寫java程式時,常常需要引用外部的library。
傳統只要把這些外部的library放置於jre/lib/ext/ ,便可以存取。

不過若是用eclipse開發java程式,
則可以在Project上按右鍵,可簡單的依下列方式引用外部的library
Properties-> Java Build Path-> Libraries-> Add External JARs

但是當Project要export出來成可執行的jar檔時,
若沒有對classpath做設定,可能造成jar檔找不到外部library的jar檔而無法執行。

過去我都把Project export出來的proj.jar 與外部的lib1.jar及lib2.jar放在同一個目錄,並寫一個bat檔來執行它們。
bat檔的內容如下: (其實這是佷久以前陶百神教我的)
java -classpath proj.jar;lib1.jar;lib2.jar Main-ClassName(沒有.class哦)

另一種方法是在export proj.jar檔前, 在MANIFEST.MF中加入下面這行設定:
Class-Path: lib1.jar lib2.jar
(用空白做分隔)

今天才發現原來eclipse有個很方便的plugin叫 Fat-jar
可以從Eclipse的選單,help-> software updates -> Find and Install -> Search for new features to install -> new remote site

會跳出一個輸入對話窗,要求plugin的名字和更新的來源,輸入如下:
Name: Fat Jar
URL: http://kurucz-grafika.de/fatjar

之後便開始安裝Fat-jar

Fat-jar 簡單易用,

直接在要export的Project上按右鍵,選"build fat-jar"

之後便會跳出選單,把你的Main-Class 設定好,按下一步。

接著把你要一起包進去的lib1.jar lib2.jar ...勾選,按下一步。

它就會幫你全部打包成一個xxx.jar檔,並放置於你的Project的根目錄下。

這個xxx.jar檔無論放在什麼位置,應該都是雙點便可執行的。

也可以在console下輸入java -jar xxx.jar 來執行它。

Reference:

Java World
http://www.javaworld.com.tw/jute/post/view?bid=20&id=111801&sty=1&tpg=1&age=0

2 comments:

  1. 請問一下要怎麼打包.jar檔案?
    我有修改一個Firefox Add-ons的jar,
    我用7-Zip解開修改後打包不回去了?
    我沒有裝Sun的那些東西,有簡單的方法可以打包嗎?
    可以的話回信到我信箱,謝謝~

    ReplyDelete