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