java中jar包的生成與使用方式
jar包的生成與使用
什么是jar包?
JAR文件的全稱(chēng)是Java Archive File,意思是Java檔案文件。
是一種壓縮文件,與常見(jiàn)的ZIP壓縮文件兼容。
兩者最大的區(qū)別是在JAR文件中默認(rèn)包含一個(gè)名為META-INF/MANIFEST.MF的清單文件,這個(gè)文件是生成JAR文件時(shí)由系統(tǒng)自動(dòng)創(chuàng)建的。
使用jar包的好處
- 安全,可以對(duì)其進(jìn)行數(shù)字簽名,只讓能夠識(shí)別數(shù)字簽名的用戶使用里面的東西。
- 加快下載速度;
- 壓縮,使文件變小,與ZIP壓縮機(jī)制完全相同。
- 包封裝。能夠讓JAR包里面的文件依賴(lài)于統(tǒng)一版本的類(lèi)文件。
- 可移植性,能夠在各種平臺(tái)上直接使用。
- 把一個(gè)JAR文件添加到系統(tǒng)的classpath環(huán)境變量之后,java通常會(huì)把這個(gè)JAR文件當(dāng)做一個(gè)路徑來(lái)處理。通常使用jar命令來(lái)壓縮,可以把一個(gè)或多個(gè)路徑全部壓縮成一個(gè)JAR文件。
什么情況下使用jar包?
當(dāng)開(kāi)發(fā)一個(gè)應(yīng)用程序后這個(gè)應(yīng)用程序包含了很多類(lèi),如果需要把這個(gè)程序提供給別人使用,通常會(huì)將這些類(lèi)文件打包成一個(gè)JAR文件,把這個(gè)文件提供給別人使用。
只要在別人系統(tǒng)的CLASSPATH環(huán)境變量中添加這個(gè)文件,則java虛擬機(jī)就可以自動(dòng)在內(nèi)存中解壓這個(gè)jar包。
可以使用命令來(lái)創(chuàng)建也可以再編譯器中創(chuàng)建
在編譯器中創(chuàng)建

在這里選擇帶有主方法的類(lèi),點(diǎn)擊OK;如果要打包普通的類(lèi),即沒(méi)有帶主方法,在這里不用選直接進(jìn)行下一步點(diǎn)擊OK



操作成功后可以在以下目錄查看到生成的jar包

如何使用jar包
將生成的jar復(fù)制到想用的地方。
如復(fù)制到桌面上,然后打開(kāi)命令窗口執(zhí)行 java -jar jar包名

如果想在另一個(gè)工程中使用:
將剛才的jar包添加進(jìn)新建的目錄

添加進(jìn)依賴(lài)

用命令創(chuàng)建
jar命令詳解
jar cf test.jar test不顯示壓縮過(guò)程將當(dāng)前路徑下的test路徑下的全部?jī)?nèi)容生成一個(gè)test.jar文件,如果已經(jīng)存在則被覆蓋。jar cvf test.jar test顯示壓縮過(guò)程;jar cvfM test.jar test不生成清單文件;jar cvfm test.jar manifest.mf test自定義清單文件信息,m指定讀取用戶清單信息。清單文件是普通文本文件。jar cvfm test.jar a.txt test將清單文件中的key-value對(duì)提取到META-INF/MANIFEST.MF文件中。jar tf test.jar查看jar包內(nèi)容;jar tf test.jar > a.txt:如果jar包中的文件路徑和文件非常多,用上一個(gè)命令就無(wú)法查看所有,所以用重定向?qū)@示結(jié)果保存到文件中。jar tvf test.jar:查看詳細(xì)內(nèi)容;jar xf test.jar解壓,將jar文件解壓到當(dāng)前目錄下;jar xvf test.jar解壓,顯示解壓過(guò)程的信息;jar uf test.jar Hello.class:更新test.jar中的Hello.jar文件,如果存在則覆蓋,否則添加;jar uvf test.jar Hello.class:更新時(shí)顯示詳細(xì)信息;
創(chuàng)建可用jar包
jar命令-e選項(xiàng),該選項(xiàng)指定JAR包中作為程序入口的主類(lèi)的類(lèi)名。
jar cvfe test.jar test.Test test
上面的命令把test目錄下的所有文件都?jí)嚎s到test.jar包中,并指定使用test.Test類(lèi)作為程序入口。
運(yùn)行上面JAR包有兩種方式:
java -jar test.jarjavaw test.jar
當(dāng)創(chuàng)建JAR包時(shí),所有類(lèi)都必須放在與包結(jié)構(gòu)對(duì)應(yīng)的目錄結(jié)構(gòu)中。
就像上面-e選項(xiàng)指定的Test類(lèi),表明入口類(lèi)為T(mén)est類(lèi)。
因此在JAR包下包含Test.class文件。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis 動(dòng)態(tài)SQL和緩存機(jī)制實(shí)例詳解
這篇文章主要介紹了MyBatis 動(dòng)態(tài)SQL和緩存機(jī)制實(shí)例詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-09-09
response.sendRedirect()實(shí)現(xiàn)重定向(頁(yè)面跳轉(zhuǎn))
在Java web開(kāi)發(fā)中,使用response.sendRedirect()可實(shí)現(xiàn)重定向功能。本文將介紹如何使用該方法進(jìn)行頁(yè)面跳轉(zhuǎn),以及該方法的使用場(chǎng)景和注意事項(xiàng),感興趣的可以了解一下2023-04-04
解析如何開(kāi)發(fā)FineReport的自定義控件
FineReport作為插件化開(kāi)發(fā)的報(bào)表軟件,有些特殊需求的功能需要自己開(kāi)發(fā),開(kāi)發(fā)的插件包帆軟官方有提提供,可以去帆軟論壇上找,本文將主要介紹如何開(kāi)發(fā)一個(gè)自定義控件,這里講講方法論。需要的朋友一起來(lái)看下吧2016-12-12
在logback.xml中自定義動(dòng)態(tài)屬性的方法
這篇文章主要介紹了在logback.xml中自定義動(dòng)態(tài)屬性的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
SpringDataRedis入門(mén)和序列化方式解決內(nèi)存占用問(wèn)題小結(jié)
spring-data-redis是spring-data模塊的一部分,專(zhuān)門(mén)用來(lái)支持在spring管理項(xiàng)目對(duì)redis的操作,這篇文章主要介紹了SpringDataRedis入門(mén)和序列化方式解決內(nèi)存占用問(wèn)題,需要的朋友可以參考下2022-12-12
springboot實(shí)現(xiàn)全局異常處理的方法(住家飯系統(tǒng))
住家飯系統(tǒng)將異常類(lèi)型分為客戶端異常(ClientException),系統(tǒng)異常(ServiceException),遠(yuǎn)程調(diào)用異常(RemoteException),本文給大家介紹springboot實(shí)現(xiàn)全局異常處理的方法,感興趣的朋友一起看看吧2025-05-05
SpringBoot+Beetl實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)庫(kù)DDL的示例代碼
最近公司里有一個(gè)新的需求,需要導(dǎo)出數(shù)據(jù)庫(kù)元數(shù)據(jù)表中存儲(chǔ)的表的 DDL 語(yǔ)句,而在元數(shù)據(jù)表中數(shù)據(jù)源的類(lèi)型龐大,少則十幾種多則達(dá)到幾十種,各種數(shù)據(jù)庫(kù)類(lèi)型都有,本篇文章就從這個(gè)模版引擎來(lái)入手介紹如何實(shí)現(xiàn)功能,需要的朋友可以參考下2025-06-06
java爬蟲(chóng)Gecco工具抓取新聞實(shí)例
本篇文章主要介紹了JAVA 爬蟲(chóng)Gecco工具抓取新聞實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10

