Java如何實(shí)現(xiàn)將類文件打包為jar包
將類文件打包為jar包
為實(shí)際項(xiàng)目寫了一個(gè)工具類,但是每次使用時(shí)都需要打開項(xiàng)目點(diǎn)擊運(yùn)行。突然想,不如將這個(gè)類打成jar包這樣后續(xù)就可以直接運(yùn)行了。
說(shuō)做就做。
1.寫類文件
大概就這么個(gè)樣子。
注意,這里用到了外部依賴,也就是為什么要寫這篇文章的原因。
本例中的外部依賴包為:commons-codec-1.14.jar
2.編譯
javac -encoding UTF-8 -classpath .;./commons-codec-1.14.jar -d . CipherTest.java
或者:
javac -encoding UTF-8 -cp .;./commons-codec-1.14.jar -d . CipherTest.java
- encoding 防止中文亂碼
- -classpath 指定class文件路徑
- -d . 會(huì)在當(dāng)前執(zhí)行目錄下生成 一個(gè)java所在的包名的(這里我的是test)目錄,以及編譯后的class文件
- 指定要被編譯的java文件
這樣就編譯為class文件了
3.測(cè)試
java -cp .;commons-codec-1.14.jar CipherTest 11 22 33
- -cp 指定依賴包,多個(gè)用;分割
- CipherTest: 是運(yùn)行的主類,后面跟著命令行參數(shù)
這樣測(cè)試就通過(guò)了。
4.打jar包
jar -cvf cipher.jar CipherTest.class
執(zhí)行運(yùn)行,發(fā)現(xiàn)找不到主類。解壓查看jar包內(nèi)容如下:
進(jìn)入META-INF查看文件:
接下來(lái)對(duì)這個(gè)文件進(jìn)行處理:
添加字段:
添加:
Main-Class: CipherTest
注意冒號(hào)后面有個(gè)空格,這個(gè)是指定主類,即啟動(dòng)類。
Class-Path: commons-codec-1.14.jar
指定依賴包,默認(rèn)jar包根目錄,有多個(gè)依賴的話,Windows用;分隔。Linux用空格分隔。
之后將依賴包拖入jar包。
最終目錄結(jié)構(gòu):
最后運(yùn)行jar包,正常工作。
jar包應(yīng)該怎么打?
1.首先確保你的項(xiàng)目
能正常啟動(dòng)并運(yùn)行
2.選中你的項(xiàng)目,點(diǎn)右鍵
選export(導(dǎo)出),如下圖:
3.選擇runnable jar file
下一步,如下圖:
4.如下圖,直接看圖
5.然后點(diǎn)finish
后面一路過(guò),不用管警告,一直點(diǎn)OK!
執(zhí)行完這5步,在自己上面選擇的路徑下面就會(huì)有相應(yīng)的jar包生成,如下圖:
下面,我們來(lái)詳細(xì)說(shuō)明一下兩種打jar包的方式有什么區(qū)別
首先,用自己的壓縮工具打開剛才打成的jar包,可以看到一個(gè)MANIFEST.MF文件,如下圖:
打開它之后的部分信息如下:
可以看到,這種方式把引用的jar包和自己的jar包都混合到了一起!(把需要的jar包和庫(kù)提取到j(luò)ar里)
再看另一種方式:
這種方式打成jar包后如下圖:(將需要的jar包和庫(kù)提取到子目錄中)
兩種方式都能正常啟動(dòng),只是方式不一樣?。?!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IntelliJ IDEA本地代碼提交到github網(wǎng)站不顯示與本地不同步問(wèn)題的解決辦法
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA本地代碼提交到github網(wǎng)站不顯示與本地不同步問(wèn)題的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10SpringBoot特點(diǎn)之依賴管理和自動(dòng)裝配(實(shí)例代碼)
在使用SpringBoot的時(shí)候,會(huì)自動(dòng)將Bean裝配到IoC容器中,操作也很簡(jiǎn)單,今天小編給大家介紹下SpringBoot特點(diǎn)之依賴管理和自動(dòng)裝配的知識(shí),感興趣的朋友一起看看吧2022-03-03springboot 中整合mybatis多數(shù)據(jù)源不使用JPA
這篇文章主要介紹了springboot 中整合mybatis多數(shù)據(jù)源不使用JPA,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08如何把idea中的項(xiàng)目導(dǎo)入github倉(cāng)庫(kù)中(圖文詳解)
這篇文章主要介紹了如何把idea中的項(xiàng)目導(dǎo)入github倉(cāng)庫(kù)中,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07java Arrays快速打印數(shù)組的數(shù)據(jù)元素列表案例
這篇文章主要介紹了java Arrays快速打印數(shù)組的數(shù)據(jù)元素列表案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Java中的notyfy()和notifyAll()的本質(zhì)區(qū)別
很多朋友對(duì)java中的notyfy()和notifyAll()的本質(zhì)區(qū)別不了解,今天小編抽空給大家整理一篇教程關(guān)于Java中的notyfy()和notifyAll()的本質(zhì)區(qū)別,需要的朋友參考下吧2017-02-02解決idea 從mapper方法直接點(diǎn)進(jìn)xml文件的問(wèn)題
這篇文章主要介紹了解決idea 從mapper方法直接點(diǎn)進(jìn)xml文件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02