如何生成可運(yùn)行jar包

今天我們一起來(lái)聊一聊如何生成可運(yùn)行jar包,什么是可運(yùn)行jar包,他有什么特點(diǎn)呢?
這些問(wèn)題我們都會(huì)在以下的內(nèi)容中給大家一一解答,好了,我們開(kāi)始這個(gè)內(nèi)容的學(xué)習(xí)吧!

可運(yùn)行jar包

首先我們來(lái)看看什么是可運(yùn)行jar包,所謂可運(yùn)行jar包就是可以直接通過(guò)以下命令執(zhí)行的jar包文件:
java -jar xxx.jar
上述命令中,我們可以看到命令行中無(wú)需指定啟動(dòng)類(lèi),也無(wú)需指定依賴包,然后就可以自動(dòng)的運(yùn)行了,這樣的jar包就是可運(yùn)行jar包。

如果你熟悉Spring Boot自然知道Spring Boot打包出來(lái)的jar包就是一個(gè)可運(yùn)行jar,但如果不使用Spring Boot你能自己創(chuàng)建一個(gè)可運(yùn)行jar包嗎?

普通jar

我們?cè)賮?lái)看看普通jar的情況,沒(méi)有對(duì)比就沒(méi)有傷害,我們只有知道了兩者的區(qū)別,才能知道其本質(zhì)。

如果你使用maven,選擇目標(biāo)為jar,不使用Spring Boot的情況下,當(dāng)你通過(guò)mvn將其打包后是一個(gè)普通jar包,這個(gè)jar包是不能直接運(yùn)行的?

你如果運(yùn)行會(huì)發(fā)現(xiàn)如下錯(cuò)誤:

xxx.jar中沒(méi)有主清單屬性

很明顯我們需要通過(guò)某種方式告訴程序啟動(dòng)時(shí)要首先執(zhí)行哪個(gè)類(lèi)?也就是執(zhí)行哪個(gè)類(lèi)的main方法?

基于idea生成可運(yùn)行jar

使用idea創(chuàng)建一個(gè)普通項(xiàng)目,不要求是maven項(xiàng)目,新建一個(gè)含main方法的類(lèi)。
接下來(lái)就是使用idea自帶的Artifacts功能生成可運(yùn)行jar包的步驟:

  1. 打開(kāi)項(xiàng)目設(shè)置視圖,選擇artifacts-->JAR --> from modules with dependencies...


    image-20200212225245733.png
  2. 設(shè)置jar包的主類(lèi)為含有main方法的類(lèi),注意MANIFEST.MF的路徑需要去掉默認(rèn)的main\java,也就是放在src根目錄下,否則會(huì)提示找不到清單文件


    image-20200212225833514.png
  3. 注意查看jar包的輸出目錄,最終生成的jar會(huì)在該路徑下


    image-20200212225920525.png
  4. 選擇build菜單,點(diǎn)擊build artifacts子菜單


    image-20200212230034709.png
  5. 在彈出的菜單中選擇要打包的artifacts


    image-20200212230108322.png

然后即可查看輸出目錄下生成的jar包,該jar包即為可運(yùn)行jar。
通過(guò)命令運(yùn)行之
java -jar regularjardemo.jar
就可以看到main方法正常執(zhí)行了。

手動(dòng)方式

其實(shí)仔細(xì)對(duì)比普通jar和可運(yùn)行jar,你會(huì)發(fā)現(xiàn)這兩個(gè)jar的區(qū)別就在于一個(gè)有MANIFEST.MF文件,一個(gè)沒(méi)有,這個(gè)就是可運(yùn)行jar的秘密。
只需要在jar文件中添加META-INF\MANIFEST.MF文件,這個(gè)MANIFEST.MF文件是一個(gè)properties文件,其中有一個(gè)Main-Class的字段,只需要將你要運(yùn)行的主類(lèi)的全類(lèi)名寫(xiě)在此處就可以實(shí)現(xiàn)可運(yùn)行jar了。

以上就是關(guān)于可運(yùn)行jar包的知識(shí)了,如果你有什么問(wèn)題或者疑問(wèn)可以在評(píng)論區(qū)留言,我會(huì)及時(shí)為你解答!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容