欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java生成jar包的方法

 更新時(shí)間:2014年09月30日 11:35:55   投稿:shichen2014  
這篇文章主要介紹了java生成jar包的方法,對(duì)Java生成jar包的具體步驟及方法進(jìn)行了較為詳細(xì)的描述,是非常實(shí)用的技巧,需要的朋友可以參考下

本文實(shí)例講述了java生成jar包的方法,是非常實(shí)用的技巧。分享給大家供大家參考。具體分析如下:

很多Java初學(xué)者都會(huì)有這樣的疑問(wèn):Java編寫的application程序是否能夠最終形成一個(gè)類似于exe一樣的可執(zhí)行文件,難道就只能用命令行運(yùn)行?

通常來(lái)說(shuō)有兩種方法,一種是制作一個(gè)可執(zhí)行的JAR文件包,然后就可以像.chm文檔一樣雙擊運(yùn)行了;而另一種是使用JET來(lái)進(jìn)行編譯。但是JET是要用錢買的,而且據(jù)說(shuō)JET也不是能把所有的Java程序都編譯成執(zhí)行文件,性能也要打些折扣。所以,使用制作可執(zhí)行JAR 文件包的方法就是最佳選擇了,何況它還能保持Java的跨平臺(tái)特性。

下面就來(lái)看看什么是JAR文件包吧:

1. JAR文件包

JAR文件就是Java Archive File,顧名思意,它的應(yīng)用是與Java息息相關(guān)的,是Java的一種文檔格式。JAR文件非常類似ZIP文件——準(zhǔn)確的說(shuō),它就是ZIP文件,所以叫它文件包。JAR文件與ZIP文件唯一的區(qū)別就是在JAR文件的內(nèi)容中,包含了一個(gè)META-INF/MANIFEST.MF文件,這個(gè)文件是在生成JAR文件的時(shí)候自動(dòng)創(chuàng)建的。舉個(gè)例子,如果我們具有如下目錄結(jié)構(gòu)的一些文件:
  ==
-- test
-- Test.class
把它壓縮成ZIP文件test.zip,則這個(gè)ZIP文件的內(nèi)部目錄結(jié)構(gòu)為:
  test.zip
  `-- test
    `-- Test.class

如果我們使用JDK的jar命令把它打成JAR文件包test.jar,則這個(gè)JAR文件的內(nèi)部目錄結(jié)構(gòu)為:
 test.jar
  |-- META-INF
  |  `-- MANIFEST.MF
  `-- test
    `--Test.class

2. 創(chuàng)建可執(zhí)行的JAR文件包

制作一個(gè)可執(zhí)行的JAR文件包來(lái)發(fā)布你的程序是JAR文件包最典型的用法。

Java程序是由若干個(gè).class文件組成的。這些.class文件必須根據(jù)它們所屬的包不同而分級(jí)分目錄存放;運(yùn)行前需要把所有用到的包的根目錄指定給CLASSPATH環(huán)境變量或者java命令的-cp參數(shù);運(yùn)行時(shí)還要到控制臺(tái)下去使用java命令來(lái)運(yùn)行,如果需要直接雙擊運(yùn)行必須寫Windows的批處理文件(.bat)或者Linux的Shell程序。因此,許多人說(shuō),Java是一種方便開(kāi)發(fā)者苦了用戶的程序設(shè)計(jì)語(yǔ)言。

其實(shí)不然,如果開(kāi)發(fā)者能夠制作一個(gè)可執(zhí)行的JAR文件包交給用戶,那么用戶使用起來(lái)就方便了。在Windows下安裝JRE(Java Runtime Environment)的時(shí)候,安裝文件會(huì)將.jar文件映射給javaw.exe打開(kāi)。那么,對(duì)于一個(gè)可執(zhí)行的JAR文件包,用戶只需要雙擊它就可以運(yùn)行程序了,和閱讀.chm文檔一樣方便(.chm 文檔默認(rèn)是由hh.exe打開(kāi)的)。那么,現(xiàn)在的關(guān)鍵,就是如何來(lái)創(chuàng)建這個(gè)可執(zhí)行的JAR文件包。

創(chuàng)建可執(zhí)行的JAR文件包,需要使用帶cvfm參數(shù)的jar命令,同樣以上述test目錄為例,命令如下:

jar cvfm test.jar manifest.mf test 

這里test.jar和manifest.mf兩個(gè)文件,分別是對(duì)應(yīng)的參數(shù)f和m,其重頭戲在manifest.mf。因?yàn)橐獎(jiǎng)?chuàng)建可執(zhí)行的JAR文件包,光靠指定一個(gè)manifest.mf文件是不夠的,因?yàn)镸ANIFEST是JAR文件包的特征,可執(zhí)行的JAR文件包和不可執(zhí)行的JAR文件包都包含MANIFEST。關(guān)鍵在于可執(zhí)行JAR文件包的MANIFEST,其內(nèi)容包含了 Main-Class一項(xiàng)。這在MANIFEST中書寫格式如下:

Main-Class: 可執(zhí)行主類全名(包含包名) 

例如,假設(shè)上例中的Test.class是屬于test包的,而且是可執(zhí)行的類(定義了 public static void main(String[]) 方法),那么這個(gè)manifest.mf可以編輯如下:

Main-Class: test.Test <回車> 

這個(gè)manifest.mf可以放在任何位置,也可以是其它的文件名,只需要有Main-Class: test.Test 一行,且該行以一個(gè)回車符結(jié)束即可。創(chuàng)建了manifest.mf文件之后,我們的目錄結(jié)構(gòu)變?yōu)椋?
  ==
   |-- test
   |  `-- Test.class
  `-- manifest.mf

這時(shí)候,需要到test目錄的上級(jí)目錄中去使用jar命令來(lái)創(chuàng)建JAR文件包。也就是在目錄樹(shù)中使用“==”表示的那個(gè)目錄中,使用如下命令:

jar cvfm test.jar manifest.mf test 

之后在“==”目錄中創(chuàng)建了test.jar,這個(gè)test.jar就是執(zhí)行的JAR文件包。運(yùn)行時(shí)只需要使用java -jar test.jar 命令即可。

需要注意的是,創(chuàng)建的JAR文件包中需要包含完整的、與Java程序的包結(jié)構(gòu)對(duì)應(yīng)的目錄結(jié)構(gòu),就像上例一樣。而 Main-Class 指定的類,也必須是完整的、包含包路徑的類名,如上例的test.Test;而且在沒(méi)有打成JAR文件包之前可以使用java <類名> 來(lái)運(yùn)行這個(gè)類,即在上例中 java test.Test 是可以正確運(yùn)行的 (當(dāng)然要在 CLASSPATH 正確的情況下)。

希望本文所述對(duì)大家的Java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • MyBatisPlus3.4.3版自動(dòng)生成代碼的使用過(guò)程

    MyBatisPlus3.4.3版自動(dòng)生成代碼的使用過(guò)程

    這篇文章主要介紹了MyBatisPlus3.4.3版自動(dòng)生成代碼的使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 用Java產(chǎn)生100個(gè)1-150間不重復(fù)數(shù)字

    用Java產(chǎn)生100個(gè)1-150間不重復(fù)數(shù)字

    這篇文章主要介紹了用Java產(chǎn)生100個(gè)1-150間不重復(fù)數(shù)字,需要的朋友可以參考下
    2017-02-02
  • 使用Spring的注解方式實(shí)現(xiàn)AOP實(shí)例

    使用Spring的注解方式實(shí)現(xiàn)AOP實(shí)例

    本篇文章主要介紹了使用Spring的注解方式實(shí)現(xiàn)AOP實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java中使用JavaScript腳本的方法步驟

    Java中使用JavaScript腳本的方法步驟

    這篇文章主要介紹了Java中使用JavaScript腳本的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • java線程池實(shí)現(xiàn)批量下載文件

    java線程池實(shí)現(xiàn)批量下載文件

    這篇文章主要為大家詳細(xì)介紹了java線程池實(shí)現(xiàn)批量下載文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Springboot調(diào)整接口響應(yīng)返回時(shí)長(zhǎng)詳解(解決響應(yīng)超時(shí)問(wèn)題)

    Springboot調(diào)整接口響應(yīng)返回時(shí)長(zhǎng)詳解(解決響應(yīng)超時(shí)問(wèn)題)

    當(dāng)后端對(duì)于數(shù)據(jù)量較大的處理或是某些耗時(shí)的操作時(shí),需要先對(duì)請(qǐng)求接口的請(qǐng)求進(jìn)行響應(yīng),下面這篇文章主要給大家介紹了關(guān)于Springboot調(diào)整接口響應(yīng)返回時(shí)長(zhǎng)(解決響應(yīng)超時(shí)問(wèn)題)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • JAVA文件讀取常用工具類(8種)

    JAVA文件讀取常用工具類(8種)

    JAVA操作文件在經(jīng)常會(huì)使用到,本文匯總了部分JAVA操作文件的讀取常用工具類,主要介紹了8種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-08-08
  • Spring的@RequestParam對(duì)象綁定方式

    Spring的@RequestParam對(duì)象綁定方式

    這篇文章主要介紹了Spring的@RequestParam對(duì)象綁定方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java多種方式實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式

    Java多種方式實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式

    這篇文章主要介紹了Java多種方式實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java中 == 與 equal 的區(qū)別講解

    java中 == 與 equal 的區(qū)別講解

    這篇文章介紹了java中 == 與 equal 的區(qū)別,有需要的朋友可以參考一下
    2013-10-10

最新評(píng)論