jar包,最直白的感受就是字尾是.jar的一種壓縮檔案,它是以zip檔案格式為基礎的壓縮包。
與zip檔案不同的是,jar檔案不僅用于壓縮和釋出,而且還用于部署和封裝庫、元件和插件程式。
jar包可以被類似jvm這樣的工具直接使用,通過manifest、部署描述符等特殊檔案,來訓示工具處理特定的jar。
jar包大體分為2種,可執行jar包,不可執行jar包。
目前大多數的jar包都是不可被執行的,這類jar包就是提供給其他應用顯現某些特定功能的。而可執行jar包可以在java環境上直接運作,大多數展現為小型工具。
1.首先,為了差別單檔案,這次我們在不同的包下編寫了兩個類。類的具體功能非常明确,不再多說。
package com.helloword;
import com.helloword.impl.hellowordimpl;
public class helloword {
public static void main(string[] args) {
hellowordimpl hellowordimpl = new hellowordimpl();
system.out.println(hellowordimpl.gettext());
}
package com.helloword.impl;
public class hellowordimpl {
public string gettext() {
return "hello word jar";
}
2.其次,把這兩個類放在對應目錄下,所謂"對應"及要求類的包與實際路徑相符,隻有這樣,運作時才能找到正确路徑下的類。
3.然後,使用javac工具進行批量編譯,如果需要編譯的量很大的話,需寫一些工具腳本進行大量編譯(todo,以後會有文章介紹)。
javac com/helloword/impl/hellowordimpl.java com/helloword/helloword.java
編譯後會在對應目錄生成.class檔案。
4.最後,對其進行打包。在打包之前,我們需要把我們的整個檔案夾移動到一個新的檔案夾下,這裡将com放在了一個叫bin的檔案夾下(如果不想把源代碼打入其中,需要将.java檔案移除)。
打包需要使用jar工具,這個工具會将所制定的檔案夾裡的内容打包成jar。cmd/終端進入bin所在的路徑,輸入:
jar cvf myhelloword.jar -c bin .
其中"myhelloword.jar"是生成jar包的名稱,"bin"是我們的檔案夾目錄。
p.s.
該方式打的jar包是沒有辦法運作的。其中,cvf是jar工具提供的幾個參數,下面是jar指令的幫助說明:
用法:jar {ctxui}[vfm0me] [jar-file] [manifest-file] [entry-point] [-c dir] files ...
選項包括:
-c 建立新的歸檔檔案
-t 列出歸檔目錄
-x 解壓縮已歸檔的指定(或所有)檔案
-u 更新現有的歸檔檔案
-v 在标準輸出中生成詳細輸出
-f 指定歸檔檔案名
-m 包含指定清單檔案中的清單資訊
-e 為捆綁到可執行 jar 檔案的獨立應用程式,指定應用程式入口點
-0 僅存儲;不使用任何 zip 壓縮
-m 不建立條目的清單檔案
-i 為指定的 jar 檔案生成索引資訊
-c 更改為指定的目錄并包含其中的檔案,如果有任何目錄檔案,則對其進行遞歸處理。
清單檔案名、歸檔檔案名和入口點名的指定順序與 "m"、"f" 和 "e" 标志的指定順序相同。
示例 1:将兩個類檔案歸檔到一個名為 classes.jar 的歸檔檔案中:
jar cvf classes.jar a.class b.class
示例 2:使用現有的清單檔案 "mymanifest" 并将 my/ 目錄中的所有檔案歸檔到 "classes.jar" 中:
jar cvfm classes.jar mymanifest -c my/ .
5.我們需要的是一個能夠運作的jar,是以我們需要編寫并指定manifest.mf,告訴java工具jar包的執行入口(即我們的main方法)。
在com的同級目錄(bin下面)下建立名稱為"manifest.mf"的檔案,并輸入如下内容(還可以指定更多jar包的資訊,這裡我們隻指定它的main類):
manifest-version: 1.0
main-class: com.helloword.helloword
儲存之後,通過jar工具打包,這裡要指定manifest.mf檔案:
jar cvfm counter.jar manifest.mf -c bin .
打包結果如下:
這樣就能在bin下看到打好的myhelloword.jar包。
cmd/終端進入jar包所在的路徑,輸入:
java -jar myhelloword.jar
運作結果:
原文位址:http://blog.csdn.net/ooppookid/article/details/50921672