導(dǎo)出單個(gè)類文件為jar包
導(dǎo)出單個(gè)類文件為jar包!
偶有這種需求,就是某個(gè)類文件獨(dú)立存在,但是需要將其導(dǎo)出為jar,供別人臨時(shí)使用,或者一些必要的場合,如: 編寫一些特殊的agent使用。
不想為某個(gè)單個(gè)文件寫一個(gè)項(xiàng)目,就想把代碼加載在某個(gè)項(xiàng)目的角落里,怎樣將該單個(gè)類文件導(dǎo)出為jar包呢?
1. 寫好功能工具類,如:
package com.youge.api;
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. 點(diǎn)擊idea中的 File -> Project Structure... -> Artifacts -> 添加+ -> JAR -> Empty

填寫好jar name, 添加好對應(yīng)的資源文件。先創(chuàng)建好與包名對應(yīng)的文件目錄結(jié)構(gòu)(目錄結(jié)構(gòu)不一致可能導(dǎo)致后續(xù)使用jar文件時(shí)報(bào)class not found exception),圖解如下:

最后,加載編寫出的單個(gè)類文件(編譯后的 .class 文件),如下圖打開添加file, 找到文件。

加載后,文件如下,設(shè)置好jar文件的輸出目錄,點(diǎn)擊ok關(guān)閉對話框:

3. 編寫清單文件 MANIFEST.MF,如有必要,再將打開 Project Structure...
點(diǎn)擊 Create new ManiFest, 選擇位置,然后創(chuàng)建一個(gè)默認(rèn)的 MANIFEST.MF。 然后關(guān)閉對話框,進(jìn)入自行編輯。


MANIFEST.MF格式如下:
Manifest-Version: 1.0
Main-Class: com.youge.api.Hello
拓展知識(shí):
文件定義了與擴(kuò)展和包相關(guān)的數(shù)據(jù)。單詞“manifest”的意思是“顯示”,其一般屬性有
\1. Manifest-Version 用來定義manifest文件的版本,例如:Manifest-Version: 1.0
\2. Created-By 聲明該文件的生成者,一般該屬性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1
\3. Signature-Version 定義jar文件的簽名版本
\4. Class-Path 應(yīng)用程序或者類裝載器使用該值來構(gòu)建內(nèi)部的類搜索路徑
應(yīng)用程序相關(guān)屬性
\1. Main-Class 定義jar文件的入口類,該類必須是一個(gè)可執(zhí)行的類,一旦定義了該屬性即可通過 java -jar x.jar來運(yùn)行該jar文件。
4. 導(dǎo)出jar文件,先運(yùn)行 build(將java文件編譯到class中,從而例jar文件可更新), 再導(dǎo)出:

導(dǎo)出,點(diǎn)擊build后完成導(dǎo)出:

如此,到之前設(shè)置的目錄下OutPut directory,就可以找到導(dǎo)出的jar文件了。
測試運(yùn)行jar文件:
java -jar hello.jar

這里只是個(gè)簡單的生成jar的方式,個(gè)人覺得還是挺實(shí)用的!
posted on 2023-02-04 15:59 swagaa 閱讀(60) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)