今天我們一起來聊一聊如何生成可運行jar包,什么是可運行jar包,他有什么特點呢?
這些問題我們都會在以下的內容中給大家一一解答,好了,我們開始這個內容的學習吧!
可運行jar包
首先我們來看看什么是可運行jar包,所謂可運行jar包就是可以直接通過以下命令執行的jar包文件:
java -jar xxx.jar
上述命令中,我們可以看到命令行中無需指定啟動類,也無需指定依賴包,然后就可以自動的運行了,這樣的jar包就是可運行jar包。
如果你熟悉Spring Boot自然知道Spring Boot打包出來的jar包就是一個可運行jar,但如果不使用Spring Boot你能自己創建一個可運行jar包嗎?
普通jar
我們再來看看普通jar的情況,沒有對比就沒有傷害,我們只有知道了兩者的區別,才能知道其本質。
如果你使用maven,選擇目標為jar,不使用Spring Boot的情況下,當你通過mvn將其打包后是一個普通jar包,這個jar包是不能直接運行的?
你如果運行會發現如下錯誤:
xxx.jar中沒有主清單屬性
很明顯我們需要通過某種方式告訴程序啟動時要首先執行哪個類?也就是執行哪個類的main方法?
基于idea生成可運行jar
使用idea創建一個普通項目,不要求是maven項目,新建一個含main方法的類。
接下來就是使用idea自帶的Artifacts功能生成可運行jar包的步驟:
-
打開項目設置視圖,選擇artifacts-->JAR --> from modules with dependencies...
image-20200212225245733.png -
設置jar包的主類為含有main方法的類,注意MANIFEST.MF的路徑需要去掉默認的main\java,也就是放在src根目錄下,否則會提示找不到清單文件
image-20200212225833514.png -
注意查看jar包的輸出目錄,最終生成的jar會在該路徑下
image-20200212225920525.png -
選擇build菜單,點擊build artifacts子菜單
image-20200212230034709.png -
在彈出的菜單中選擇要打包的artifacts
image-20200212230108322.png
然后即可查看輸出目錄下生成的jar包,該jar包即為可運行jar。
通過命令運行之
java -jar regularjardemo.jar
就可以看到main方法正常執行了。
手動方式
其實仔細對比普通jar和可運行jar,你會發現這兩個jar的區別就在于一個有MANIFEST.MF文件,一個沒有,這個就是可運行jar的秘密。
只需要在jar文件中添加META-INF\MANIFEST.MF文件,這個MANIFEST.MF文件是一個properties文件,其中有一個Main-Class的字段,只需要將你要運行的主類的全類名寫在此處就可以實現可運行jar了。
以上就是關于可運行jar包的知識了,如果你有什么問題或者疑問可以在評論區留言,我會及時為你解答!