天天看點

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

jar包,最直白的感受就是字尾是.jar的一種壓縮檔案,它是以zip檔案格式為基礎的壓縮包。

與zip檔案不同的是,jar檔案不僅用于壓縮和釋出,而且還用于部署和封裝庫、元件和插件程式。

jar包可以被類似jvm這樣的工具直接使用,通過manifest、部署描述符等特殊檔案,來訓示工具處理特定的jar。

jar包大體分為2種,可執行jar包,不可執行jar包。

目前大多數的jar包都是不可被執行的,這類jar包就是提供給其他應用顯現某些特定功能的。而可執行jar包可以在java環境上直接運作,大多數展現為小型工具。

1.首先,為了差別單檔案,這次我們在不同的包下編寫了兩個類。類的具體功能非常明确,不再多說。

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

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());  

}  

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

package com.helloword.impl;  

public class hellowordimpl {  

    public string gettext() {  

        return "hello word jar";  

    }  

2.其次,把這兩個類放在對應目錄下,所謂"對應"及要求類的包與實際路徑相符,隻有這樣,運作時才能找到正确路徑下的類。

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

3.然後,使用javac工具進行批量編譯,如果需要編譯的量很大的話,需寫一些工具腳本進行大量編譯(todo,以後會有文章介紹)。

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

javac com/helloword/impl/hellowordimpl.java com/helloword/helloword.java  

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

編譯後會在對應目錄生成.class檔案。

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

4.最後,對其進行打包。在打包之前,我們需要把我們的整個檔案夾移動到一個新的檔案夾下,這裡将com放在了一個叫bin的檔案夾下(如果不想把源代碼打入其中,需要将.java檔案移除)。

打包需要使用jar工具,這個工具會将所制定的檔案夾裡的内容打包成jar。cmd/終端進入bin所在的路徑,輸入:

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

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 的歸檔檔案中:

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

jar cvf classes.jar a.class b.class  

示例 2:使用現有的清單檔案 "mymanifest" 并将 my/ 目錄中的所有檔案歸檔到 "classes.jar" 中:

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

jar cvfm classes.jar mymanifest -c my/ .  

5.我們需要的是一個能夠運作的jar,是以我們需要編寫并指定manifest.mf,告訴java工具jar包的執行入口(即我們的main方法)。

在com的同級目錄(bin下面)下建立名稱為"manifest.mf"的檔案,并輸入如下内容(還可以指定更多jar包的資訊,這裡我們隻指定它的main類):

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

manifest-version: 1.0  

main-class: com.helloword.helloword  

儲存之後,通過jar工具打包,這裡要指定manifest.mf檔案:

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

jar cvfm counter.jar manifest.mf -c bin .  

打包結果如下:

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

這樣就能在bin下看到打好的myhelloword.jar包。

cmd/終端進入jar包所在的路徑,輸入:

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

java -jar myhelloword.jar  

運作結果:

Java千百問_02基本使用(003)_不使用IDE如何打jar包不使用IDE如何打jar包

原文位址:http://blog.csdn.net/ooppookid/article/details/50921672