熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

java如何創建jar文件

2013-11-23 19:35:20  來源: Java核心技術 

  並不是所有類型的 Java 應用程序都能打包到單獨的一個 JAR 文件中去 必須符合一定的條件 一個 Java 應用程序的所有文件才能打包到一個文件中去 另外 JAR 文件有兩種 一種是有清單(manifest)文件的 一種是沒有清單文件的(這種主要用來存放 Java 庫文件) 清單文件有許多作用 我這裡只討論那種可以使用 Java 來運行 JAR 文件的清單文件 就是使用命令

  java jar MyJarFilejar

  可以直接運行的 JAR 文件 這種 JAR 文件的清單文件的內容如下所示

  ManifestVersion:

  MainClass: MainClassFile

  CreatedBy: Your Company

   例如 假定你的程序裡面的主程序是 comabcMainFrame 那麼你的這個清單文件的內容是

  ManifestVersion:

  MainClass: comabcMainFrame

  CreatedBy: Abc Company

   然後我想討論一下打包到單獨 JAR 文件的應用程序的編寫需要注意的問題

  程序的資源文件(如*gif *jpg *jpeg *properties 等等)不能使用物理路徑 只能使用相對於當前類文件的相對資源路徑 只有這樣才能保證打包以後程序才能找到這些資源文件 那麼 這些文件在打開的時候都要使用下列語句

  URL url = getClass()getResource(String name)

  或者

  InputStream in = getClass()getResourceAsStream(String name)

   例如

  javaxswingImageIcon icon = new javaxswingImageIcon(gif

  那麼打包後的程序將不能找到這個圖片 因為它引用了一個物理路徑的圖片 它應該改成這樣

  javaxswingImageIcon icon = new javaxswingImageIcon(getClass()getResource(gif))

   其它的資源文件的使用也與此相似 不過屬性文件(*properties)的使用 Java 自動會加載 JAR 文件中的屬性文件 例如

  ResourceBundlegetBundle(comabctest

  那麼 這個文件只要放在 JAR 文件目錄結構下的 com/abc/testproperties Java 就能自動找到這個文件

  接著我想討論一下使用 JAR 工具如何來創建 JAR 文件 這個工具可以在 <JDK_install_HOME>/bin 下找到 文件名在 Win 版下為 jarexe Unix 下為 jar 在命令行窗口下輸入 jar 命令 將看到下列輸出

  用法jar {ctxu}[vfmM] [jar文件] [manifest文件] [C 目錄] 文件名 …

  選項

  c 創建新的歸檔

  t 列出歸檔內容的列表

  x 展開歸檔中的命名的(或所有的〕文件

  u 更新已存在的歸檔

  v 生成詳細輸出到標准輸出上

  f 指定歸檔文件名

  m 包含來自指定的清單(manifest〕文件的清單(manifest〕信息

   只存儲方式未用ZIP壓縮格式

  M 不產生所有項的清單(manifest〕文件

  i 為指定的jar文件產生索引信息

  C 改變到指定的目錄並且包含下列文件

  如果一個文件名是一個目錄它將被遞歸處理

  清單(manifest〕文件名和歸檔文件名都需要被指定mf標志指定的相同順

  示例將兩個class文件歸檔到一個名為 classesjar 的歸檔文件中

  jar cvf classesjar Fooclass Barclass

  示例用一個存在的清單(manifest〕文件 mymanifest 將 foo/ 目錄下的所有

  文件歸檔到一個名為 classesjar 的歸檔文件中

  jar cvfm classesjar mymanifest C foo/

  假設你想將上面的 comabcMainFrame 為主程序的一個應用程序打包為一個單獨的 JAR 文件 那麼首先在程序的根目錄下建立內容如前所述的清單文件 文件名為 MANIFESTMF 然後在命令行窗口下 轉變當前目錄為程序根目錄 輸入下列命令

  jar cvfm abcAppjar MANIFESTMF **

   那麼 會使用現有的清單文件創建一個名為 abcAppjar 的文件 並將目錄下的所有文件(包括子目錄)加入此 JAR 文件中

  而如果希望使用非 JAR 工具建立 JAR 文件 建議使用 WinRAR 首先還是需要建立一個清單文件(名字必須為MANIFESTMF) 向此文件中寫入同使用 JAR 工具時一樣的內容 接著需要建立一個METAINF子目錄 然後將 MANIFESTMF 放入此目錄 接著就可以保持目錄結構將所有這些內容使用 WinRAR 壓縮為 ZIP 格式的文件 文件名取為 abcAppjar 即可 如下所示 目錄結構為

  +

  |

  +/METAINF/MANIFESTMF

  |

  +com/abc/MainFrameclass

   選中程序根目錄下的各個子目錄及根目錄下的文件 點擊鼠標右鍵 選擇添加到壓縮包…命令 然後指定文件名為 abcAppjar 格式為 ZIP 最後點擊確定即可完成


From:http://tw.wingwit.com/Article/program/Java/hx/201311/27127.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.