前言
idea作為一個java開發的便利ide工具,個人是比較喜歡的,今天來探索個小功能: 導出單個類文件為jar包!
jar文件的全稱是java archive file,意思就是java檔案文件。通常jar文件是一種壓縮文件,與常見的zip壓縮文件兼容,同城也被稱為jar包。jar文件與zip文件的去區別就是在jar文件中默認包含了一個名為meta-inf/manifest.mf的清單文件,這個清單文件是在生成jar文件時系統自動創建的。
當開發了一個應用程序后,這個應用程序包含了很多類,如果需要把這個應用程序提供給別人使用,通常會將這些類文件打包成一個jar文件,把這個jar文件提供給別人使用。只要別人在系統的classpath環境變量中添加這個jar文件,則java虛擬機就可以自動在內存中解壓這個jar包,把這個jar文件當成一個路徑,在這個路徑中查找所于曉的類或寶層次對應的路徑結構。
使用jar文件有以下好處:
- 安全。能夠對jar文件進行數字簽名,只讓能夠識別數字簽名的用戶使用里面的東西。
- 加快下載速度。在網上使用applet時,如果存在多個文件而不打包,為了能夠把每個文件都下載到客戶端,需要為每個文件單獨建立一個http連接,這是非常耗時的工作。將這些文件壓縮成一個jar包,只要建立一個http連接就能夠一次下載所有的文件。
- 壓縮。使文件變小,jar的壓縮機制和zip完全相同
- 包封裝。能夠讓jar包里面的文件依賴于統一版本的類文件。
- 可一致性。jar包作為內嵌在java平臺內部處理的標準,能夠在各種平臺上直接使用。
之所以有這種需求,就是某個類文件獨立存在,但是需要將其導出為jar,供別人臨時使用,或者一些必要的場合,如: 編寫一些特殊的agent使用。
不想為某個單個文件寫一個項目,就想把代碼加載在某個項目的角落里,怎樣將該單個類文件導出為jar包呢?
方法如下:
1. 寫好功能工具類,如:
1
2
3
4
5
6
7
8
9
10
11
|
public class hello { public static void main(string[] args) throws exception { hello hello = new hello(); hello.sayhello( "word. bingo!" ); } public void sayhello(string word) { system.out.println( "hello, " + word); } } |
2. 點擊idea中的 file -> project structure... -> artifacts -> 添加+ -> jar -> empty
填寫好jar name, 添加好對應的資源文件。先創建好與包名對應的文件目錄結構(目錄結構不一致可能導致后續使用jar文件時報class not found exception),圖解如下:
最后,加載編寫出的單個類文件(編譯后的 .class 文件,一般在 target 目錄下),如下圖打開添加file, 找到文件。
加載后,文件如下,設置好jar文件的輸出目錄,點擊ok關閉對話框:
3. 編寫清單文件 manifest.mf,如有必要,再將打開 project structure...
點擊 create new manifest, 選擇位置,然后創建一個默認的 manifest.mf。 然后關閉對話框,進入自行編輯。
一些基礎參數可以直接在上面填寫:
manifest.mf格式如下:
1
2
|
manifest-version: 1.0 premain- class : com.youge.api.hello |
4. 導出jar文件,先運行 build(將java文件編譯到class中,從而例jar文件可更新), 再導出:
導出,點擊build后完成導出:
如此,到之前設置的目錄下,就可以找到導出的jar文件了。
測試運行jar文件:
1
|
java -jar hello.jar |
這里只是個簡單的生成jar的方式,個人覺得還是挺實用的!
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:http://www.cnblogs.com/yougewe/p/9651156.html