jar包生制作幾種方法,jar包導出三種方法:eclipse導出、jar命令、FatJar插件


 Eclipse將引用了第三方jar包的Java項目打包成jar文件的兩種方法

 

方案一:用Eclipse自帶的Export功能

步驟1:准備主清單文件 “MANIFEST.MF”,

由於是打包引用了第三方jar包的Java項目,故需要自定義配置文件MANIFEST.MF,在該項目下建立文件MANIFEST.MF,內容如下:

Manifest-Version: 1.0
Class-Path: libs/commons-codec.jar libs/commons-httpclient-3.1.jar libs/commons-logging-1.1.jar libs/log4j-1.2.16.jar libs/jackson-all-1.8.5.jar
Main-Class: main.KillCheatFans

第一行是MAINIFEST的版本,第二行Class-Path就指定了外來jar包的位置,第三行指定我們要執行的MAIN java文件。

這里要注意幾點:

復制代碼
1、Class-Path: 和Main-Class: 后邊都有一個空格,必須加上,否則會打包失敗,錯誤提示為:Invalid header field;

2、假設我們的項目打包后為KillCheatFans.jar,那么按照上面的定義,應該在 KillCheatFans.jar的同層目錄下建立一個libs文件夾(即libs文件和打包的jar文件
在同一個目錄下),並將相關的jar包放在里面。否則將會出現“Exception in thread "main" java.lang.NoClassDefFoundError”的錯誤;

3、Main-Class后面是類的全地址,比如你的主文件是KillCheatFans.java,文件里打包為package com.main; 那么這里就寫com.main.KillCheatFans,
不要加.java后綴,主文件地址寫錯將會出現“找不到或無法加載主類”的錯誤;

4、寫完Main-Class后一定要回車(即最后一行是空白行),讓光標到下一行,這樣你生成的jar包才能找到你的主class去運行,

否則將會出現“jar中沒有主清單屬性”的錯誤。
復制代碼

 

步驟2:右擊Java工程選擇Export—>選擇JAR file—>Next

 

步驟3:選擇要打包的文件,不需要的文件不必打包,減小打包后的jar文件大小,並進行選項配置如下

這里有幾個選項:

* Export generated class files and resources 表示只導出生成的.class文件和其他資源文件
* Export all output folders for checked projects 表示導出選中項目的所有文件夾
* Export java source file and resouces 表示導出的jar包中將包含你的源代碼*.java,如果你不想泄漏源代碼,那么就不要選這項了
* Export refactorings for checked projects 把一些重構的信息文件也包含進去

 

步驟4:選擇我們在第一步中自定義的配置文件路徑,這一步很重要,不能采用默認選項

 

這里解釋一下配置項:

* Generate the manifest file:是系統幫我們自動生成MANIFEST.MF文件,如果你的項目沒有引用其他class-path,那可以選擇這一項。
* Use existing mainfest from workspace:這是可以選擇我們自定義的.MF文件,格式如上所寫,引用了第三方包時選用。
* Seal content:要封裝整個jar或者指定的包packet。
* Main class:這里可以選擇你的程序入口,將來打包出來的jar就是你這個入口類的執行結果。

 

最后Finish,即生成了我們要的jar文件。

 

運行該jar文件有兩種方式:

1. 在命令行下運行命令java -jar 你的jar文件名稱,比如我的執行如下:

如果在jar中有一些System.out.prinln語句(如上執行結果),運行后不想在控制台輸出而是保存在文件中方便以后查看,可以用一下命令:
java -jar KillCheatFans.jar > log.txt (這時命令行窗口不會有任何輸出)
輸出信息會被打印到log.txt中,當然log.txt自動生成,並位於和KillCheatFans.jar一個目錄中。

 

 

二、安裝Eclipse打包插件Fat Jar

     方案一對於含有較多第三方jar文件或含有第三方圖片資源等就顯得不合適,太繁瑣。這時可以使用一個打包的插件—Fat Jar。

     Fat Jar Eclipse Plug-In是一個可以將Eclipse Java Project的所有資源打包進一個可執行jar文件的小工具,可以方便的完成各種打包任務,我們經常會來打jar包,但是eclipse自帶的打包jar似乎不太夠用,Fat Jar是eclipse的一個插件,特別是Fat Jar可以打成可執行Jar包,並且在圖片等其他資源、引用外包方面使用起來更方便。


安裝方法:

1. Eclipse在線更新方法
Help > Install New Software > Add,
name:Fat Jar
location:http://kurucz-grafika.de/fatjar

2. Eclipse插件手動安裝方法
下載地址:http://downloads.sourceforge.net/fjep/net.sf.fjep.fatjar_0.0.27.zip?modtime=1195824818&big_mirror=0
將解壓出的plugins中的文件復制到eclipse安裝目錄中的plugins目錄下,然后重啟eclipse即可。

使用方法:

步驟1:右擊工程項目選擇Buile Fat Jar

 

步驟2:配置jar文件存放目錄,主Main文件等,如下圖

 

步驟3:選擇所要用到的第三方jar包

 

最后Finish,即生成了我們要的jar文件,十分方便。

 

 

 

三、通過jar命令

如果有任何目錄文件,則對其進行遞歸處理。清單文件名、歸檔文件名和入口點名的指定順序與 "m"、"f" 和 "e" 標志的指定順序相同。

一、打包成一般的jar包

輸入如下命令即可:
    jar cvf counter.jar -C bin .
使用現有的清單文件 "mymanifest" 並將 foo/ 目錄中的所有文件歸檔到 "classes.jar" 中:
    jar cvfm classes.jar mymanifest -C foo/ .

二、打包成可運行的jar包

要打包成可運行的jar包,需要在MANIFEST.MF文件中指定主類,以Java源代碼行數統計程序的打包為例,演示如何打包:

1)首先編輯MANIFEST.MF文件,內容如下:

  1. Manifest-Version: 1.0  
  2. Created-By: rsljdkt  
  3. Class-Path: .  
  4. Main-Class: Main  

  第一行指定清單的版本,若無,則JDK默認生成:Manifest-Version: 1.0。

  第二行指明創建的作者,若無,則JDK默認生成Created-By: 1.6.0_22(Sun Microsystems Inc.)。

  第三行指定主類所在類路徑。

  第四行指明程序運行的主類。

2)使用jar命令進行打包:

jar cvfm counter.jar MANIFEST.MF -C bin .  

  參數f:指定打包后的包名。

  參數m:指定自定義的MANIFEST.MF清單文件,否則,JDK會自動生成不包含Main-Class的默認清單。

  參數c:指定是創建新的歸檔文件。

  參數v:在標准輸出中生成詳細輸出,該選項是可選的。

1.如果你用JBuilder的話編譯單個Bean時自動生成 
編譯多個還是得自己寫
2.你用工具打包看,如FatJar插件之類的...

3. manifest.mf得自己下吧你新建manifest.mf文檔,寫Main-Class: 你的可執行主類全名

然后在cmd下 執行jar cvfm test1.jar manifest.mf test1.class

http://stackoverflow.com/questions/9689793/cant-execute-jar-file-no-main-manifest-attribute

http://www.cnblogs.com/silentjesse/archive/2013/04/07/3003992.html

http://blog.chinaunix.net/uid-20463341-id-1673514.html

http://www.tuicool.com/articles/feYJze

 http://blog.csdn.net/zhifeiyu2008/article/details/8829637

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM