idea中將單個java類導(dǎo)出為jar包文件的方法
前言
idea作為一個java開發(fā)的便利IDE工具,個人是比較喜歡的,今天來探索個小功能: 導(dǎo)出單個類文件為jar包!
JAR文件的全稱是Java Archive File,意思就是Java檔案文件。通常JAR文件是一種壓縮文件,與常見的ZIP壓縮文件兼容,同城也被稱為JAR包。JAR文件與zip文件的去區(qū)別就是在JAR文件中默認(rèn)包含了一個名為META-INF/MANIFEST.MF的清單文件,這個清單文件是在生成JAR文件時系統(tǒng)自動創(chuàng)建的。
當(dāng)開發(fā)了一個應(yīng)用程序后,這個應(yīng)用程序包含了很多類,如果需要把這個應(yīng)用程序提供給別人使用,通常會將這些類文件打包成一個JAR文件,把這個JAR文件提供給別人使用。只要別人在系統(tǒng)的CLASSPATH環(huán)境變量中添加這個JAR文件,則Java虛擬機就可以自動在內(nèi)存中解壓這個JAR包,把這個JAR文件當(dāng)成一個路徑,在這個路徑中查找所于曉的類或?qū)殞哟螌?yīng)的路徑結(jié)構(gòu)。
使用JAR文件有以下好處:
- 安全。能夠?qū)AR文件進(jìn)行數(shù)字簽名,只讓能夠識別數(shù)字簽名的用戶使用里面的東西。
- 加快下載速度。在網(wǎng)上使用applet時,如果存在多個文件而不打包,為了能夠把每個文件都下載到客戶端,需要為每個文件單獨建立一個HTTP連接,這是非常耗時的工作。將這些文件壓縮成一個JAR包,只要建立一個http連接就能夠一次下載所有的文件。
- 壓縮。使文件變小,JAR的壓縮機制和zip完全相同
- 包封裝。能夠讓JAR包里面的文件依賴于統(tǒng)一版本的類文件。
- 可一致性。JAR包作為內(nèi)嵌在Java平臺內(nèi)部處理的標(biāo)準(zhǔn),能夠在各種平臺上直接使用。
之所以有這種需求,就是某個類文件獨立存在,但是需要將其導(dǎo)出為jar,供別人臨時使用,或者一些必要的場合,如: 編寫一些特殊的agent使用。
不想為某個單個文件寫一個項目,就想把代碼加載在某個項目的角落里,怎樣將該單個類文件導(dǎo)出為jar包呢?
方法如下:
1. 寫好功能工具類,如:
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, 添加好對應(yīng)的資源文件。先創(chuàng)建好與包名對應(yīng)的文件目錄結(jié)構(gòu)(目錄結(jié)構(gòu)不一致可能導(dǎo)致后續(xù)使用jar文件時報class not found exception),圖解如下:
最后,加載編寫出的單個類文件(編譯后的 .class 文件,一般在 target 目錄下),如下圖打開添加file, 找到文件。
加載后,文件如下,設(shè)置好jar文件的輸出目錄,點擊ok關(guān)閉對話框:
3. 編寫清單文件 MANIFEST.MF,如有必要,再將打開 Project Structure...
點擊 Create new ManiFest, 選擇位置,然后創(chuàng)建一個默認(rèn)的 MANIFEST.MF。 然后關(guān)閉對話框,進(jìn)入自行編輯。
一些基礎(chǔ)參數(shù)可以直接在上面填寫:
MANIFEST.MF格式如下:
Manifest-Version: 1.0 Premain-Class: com.youge.api.Hello
4. 導(dǎo)出jar文件,先運行 build(將java文件編譯到class中,從而例jar文件可更新), 再導(dǎo)出:
導(dǎo)出,點擊build后完成導(dǎo)出:
如此,到之前設(shè)置的目錄下,就可以找到導(dǎo)出的jar文件了。
測試運行jar文件:
java -jar hello.jar
這里只是個簡單的生成jar的方式,個人覺得還是挺實用的!
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- 基于Java的打包jar、war、ear包的作用與區(qū)別詳解
- mysql-connector-java.jar包的下載過程詳解
- IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時候報decompiled.class file bytecode version:52.0(java 8)錯誤的解決辦法
- java命令執(zhí)行jar包的多種方法(四種方法)
- java打包成可執(zhí)行的jar或者exe的詳細(xì)步驟
- 在eclipse導(dǎo)入Java的jar包的方法JDBC(圖文說明)
- 將java程序打成jar包在cmd命令行下執(zhí)行的方法
- java使用命令行打包JAR
- shell腳本運行java程序jar的方法
- 一鍵打包壓縮,Java項目變身JAR
相關(guān)文章
springboot中rabbitmq實現(xiàn)消息可靠性機制詳解
這篇文章主要介紹了springboot中rabbitmq實現(xiàn)消息可靠性機制詳解,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09Java靜態(tài)static關(guān)鍵字原理詳解
這篇文章主要介紹了Java靜態(tài)static關(guān)鍵字原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12集成apollo動態(tài)日志取締logback-spring.xml配置
這篇文章主要為大家介紹了集成apollo動態(tài)日志取締logback-spring.xml配置的過程內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02解決 java: 程序包com.baomidou.mybatisplus.annotation不存在
在使用Java編寫程序時,經(jīng)常會遇到各種編譯錯誤或運行時異常,本文主要介紹了解決java:程序包com.baomidou.mybatisplus.annotation不存在,具有一定的參考價值,感興趣的可以了解一下2024-03-03SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗及參數(shù)自定義注解校驗詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot常見get/post請求參數(shù)處理、參數(shù)注解校驗及參數(shù)自定義注解校驗的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03Intellij IDEA命令行執(zhí)行java無法加載主類解決方案
這篇文章主要介紹了Intellij IDEA命令行執(zhí)行java無法加載主類解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09