<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創(chuàng)作品(標(biāo)有[原]字樣)轉(zhuǎn)載時(shí)請(qǐng)注明出處,謝謝。

    常用鏈接

    常用設(shè)置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 155669
    • 排名 - 391

    最新評(píng)論

    [標(biāo)題]:[原]手動(dòng)打包JAR為可執(zhí)行文件
    [時(shí)間]:2012-02-13
    [摘要]:打包JAR的步驟、JAR包內(nèi)部的資源訪問以及MANIFEST.MF文件格式注意事項(xiàng)。
    [關(guān)鍵字]: Java、package、打包、Jar、manifest、可執(zhí)行文件
    [文章編號(hào)]:暫無
    [環(huán)境]: JDK 7.0
    [作者]: wintys  (wintys@gmail.com)

    [正文]:
    0、背景
        盡管IDE自動(dòng)打包JAR的功能已經(jīng)很強(qiáng)大,但是手動(dòng)打包JAR的步驟和注意事項(xiàng)也得心知肚明。對(duì)于簡單的示例程序,使用手動(dòng)打包也很方便。

    1、打包JAR
        1.1 建立清單文件
        以下內(nèi)容為文件內(nèi)容   
        清單文件MANIFEST.MF(在D:\test\class目錄下):
        ==================
        Manifest-Version: 1.0   
        Main-Class: a(主類的路徑,此選項(xiàng)可選,如果希望在windows下雙擊就執(zhí)行,必須寫)   
        Created-By: 1.7.0_02 (Oracle Corporation)(隨便寫,這個(gè)是創(chuàng)建人名字)   
        ==================   

        1.2 打包   
        在D:\test\class\目錄下執(zhí)行   
        jar cvfm classes.jar MANIFEST.MF *.*   

        以上命令將class下所有文件打包到classes.jar,生成在class目錄下。   

        1.3 執(zhí)行   
        輸入java -jar classes.jar執(zhí)行  或   雙擊classes.jar即可。

        1.4 另一種方案   
        如果希望使用非JAR工具建立JAR文件, 建議使用WinRAR。首先還是需要建立一個(gè)清單文件(名字必須為MANIFEST.MF), 向此文件中寫入同使用JAR 工具時(shí)一樣的內(nèi)容, 接著需要建立一個(gè)META-INF子目錄, 然后將 MANIFEST.MF放入此目錄, 接著就可以保持目錄結(jié)構(gòu)將所有這些內(nèi)容使用 WinRAR 壓縮為 ZIP 格式的文件,文件名取為 xxx.jar 即可。

    2、需要注意的相關(guān)問題
    2.1 JAR中的資源訪問
        程序的資源文件(如*.gif, *.jpg, *.jpeg, *.properties 等等)不能使用物理路徑, 只能使用相對(duì)于當(dāng)前類文件的相對(duì)資源路徑, 只有這樣才能保證打包以后程序才能找到這些資源文件. 那么, 這些文件在打開的時(shí)候都要使用下列語句:
        URL url = getClass().getResource(String name);
        或者
        InputStream in = getClass().getResourceAsStream(String name);

        例如:
        URL url = getClass().getResource("loading.gif");
        ImageIcon icon = new ImageIcon(url);
        其它的資源文件的使用也與此相似. 不過屬性文件(*.properties)的使用, Java 自動(dòng)會(huì)加載 JAR 文件中的屬性文件, 例如:
    ResourceBundle.getBundle("com.abc.test");
    那么, 這個(gè)文件只要放在 JAR 文件目錄結(jié)構(gòu)下的 com/abc/test.properties, Java 就能自動(dòng)找到這個(gè)文件.

    2.2 清單文件的格式
    MANIFEST.MF內(nèi)容示例(添加JAR庫文件,在Class-Path指明路徑):
        Manifest-Version: 1.0   
        Class-Path: lib/commons-codec-1.4.jar lib/commons-logging-1.1.1.jar li
         b/httpclient-4.1.3.jar lib/httpclient-cache-4.1.3.jar lib/httpcore-4.
         1.4.jar lib/httpmime-4.1.3.jar    
        Created-By: 1.7.0_02 (Oracle Corporation)
        Main-Class: MyLogin

        a.清單文件文件條目的冒號(hào)后有一個(gè)空格。
        b.清單文件總是以Manifest-Version屬性開頭
        c.每行最長72個(gè)字符,如果超過,采用續(xù)行。(手動(dòng)寫MANIFEST.MF時(shí)不受此限,用JAR.exe生成JAR包時(shí)會(huì)自動(dòng)斷行。)
        d.確認(rèn)每行都以回車結(jié)束,否則改行將會(huì)被忽略。
        e.如果Class-Path 中的存在路徑,使用"/"分隔目錄,與平臺(tái)無關(guān)。
        f.Class-Path中的jar包之間用空格分隔,而非分號(hào)。
        g.如果庫不打包入JAR,寫成:Class-Path: ./lib/jacob.jar ./lib/jdom.jar ./lib/log4j.jar

    [參考資料]:
        [1]*《命令行用JAR打包CALSS文件,很簡單》: http://www.diybl.com/course/3_program/java/javajs/20090407/164482.html
        [2] 《打包程序?yàn)?JAR 可執(zhí)行文件》 : http://www.moon-soft.com/doc/25438.htm
        [3] 《打jar把第三方的jar也打進(jìn)去》 : http://m.tkk7.com/soddabao/archive/2007/01/08/92455.html
        [4] 《Jar命令 Manifest.mf的用法》 : http://ganqing.iteye.com/blog/1138341
        [5] 《關(guān)于 jar包中MANIFEST.MF 寫法 》 : http://blog.csdn.net/happyhell/article/details/6639792
        [6]*《JAR File Specification》(Oracle) : http://docs.oracle.com/javase/1.3/docs/guide/jar/jar.html#The%20META-INF%20directory
    原創(chuàng)作品,轉(zhuǎn)載請(qǐng)務(wù)必保持原文完整性并注明出處。
    作者:wintys (wintys@gmail.com)
    博客:http://m.tkk7.com/wintys
    posted on 2012-02-13 20:35 天堂露珠 閱讀(1289) 評(píng)論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲国产高清人在线| 67pao强力打造67194在线午夜亚洲| 亚洲宅男精品一区在线观看| 久久99热精品免费观看动漫 | 国产成人高清亚洲一区久久| 在线观看人成视频免费| 伊人久久亚洲综合影院首页| 人禽杂交18禁网站免费| 亚洲乱亚洲乱妇24p| 日本无卡码免费一区二区三区| 日韩国产精品亚洲а∨天堂免| 日本一线a视频免费观看| www亚洲精品久久久乳| 亚洲国产精品尤物YW在线观看| 日本激情猛烈在线看免费观看| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 免费国产黄网站在线观看动图| 亚洲精品无码久久毛片| 91精品成人免费国产| 99ri精品国产亚洲| 久久久久久久91精品免费观看| 精品国产日韩久久亚洲| 国产三级电影免费观看| 国内精品免费久久影院| 亚洲精品自拍视频| 国产成人免费网站在线观看| 一本岛v免费不卡一二三区| 亚洲av无码不卡一区二区三区| 亚洲精品在线免费观看| 处破女第一次亚洲18分钟| 国产亚洲美日韩AV中文字幕无码成人| 亚洲一区二区在线免费观看| 亚洲粉嫩美白在线| 亚洲精品乱码久久久久久按摩 | 亚洲国产香蕉人人爽成AV片久久 | 国产精品久久久久免费a∨| 老司机午夜在线视频免费| 亚洲AV无码专区电影在线观看| 成人女人A级毛片免费软件| 无遮挡国产高潮视频免费观看| 亚洲无成人网77777|