手動(dòng)做一個(gè)可執(zhí)行的jar包

SpringBoot項(xiàng)目可以直接打成jar包疤估,發(fā)布到服務(wù)器上,通過java -jar命令執(zhí)行霎冯,發(fā)布運(yùn)行一個(gè)服務(wù)端的項(xiàng)目非常方便铃拇。
那SpringBoot的jar包是如何運(yùn)行起來的呢?先手動(dòng)做一個(gè)可執(zhí)行的jar包吧

目錄結(jié)構(gòu)

image.png

程序代碼

package com.compile.demo.bean;

public class Student {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
package com.compile.demo;

import com.compile.demo.bean.Student;
import org.apache.commons.lang3.StringUtils;

public class Main {
    public static void main(String[] args) {
        String str = "Hello ";
        Student s = new Student("zhangsan");
        if (StringUtils.isNotEmpty(str)) {
            System.out.println(str + s.getName());
        } else {
            System.out.println("為空!");
        }
    }
}

手動(dòng)編譯

  1. 執(zhí)行: javac -encoding utf-8 -Djava.ext.dirs=libs -d classes src\com\compile\demo\*.java src\com\compile\demo\bean\*.java
  2. 當(dāng)前目錄結(jié)構(gòu):
    image.png

    手動(dòng)編譯的詳細(xì)過程請(qǐng)參照:手動(dòng)編譯及執(zhí)行java類(包含并引用第三方j(luò)ar)

打jar包

  1. 創(chuàng)建MANIFEST.MF文件
Manifest-Version: 1.0
Main-Class: com.compile.demo.Main
Class-Path: commons-lang3-3.4.jar

請(qǐng)務(wù)必在文件的最后一行沈撞,至少加一個(gè)回車換行

  • Manifest-Version 版本號(hào)默認(rèn)為1.0
  • Main-Class 入口的主類慷荔,也就是main方法所在的類
  • Class-Path 引用外部類的路徑
  1. 再將手動(dòng)編譯的.class文件和引用的commons-lang3-3.4.jar移動(dòng)到與MANIFEST.MF同一個(gè)目錄下


    image.png
  2. 打包
    在該文件夾下執(zhí)行:jar -cvfm compile.jar MANIFEST.MF com commons-lang3-3.4.jar
  • jar命令是jdk自帶的,可在%JAVA_HOME%\bin中找到
  • c 創(chuàng)建新檔案
  • v 在標(biāo)準(zhǔn)輸出中生成詳細(xì)輸出缠俺,有輸出信息
  • f 指定檔案文件名
  • m 包含指定清單文件中的清單信息显晶,也就是指定我們的MANIFEST.MF 如果沒有這個(gè)參數(shù),會(huì)生成一個(gè)默認(rèn)的MANIFEST.MF文件
  • compile.jar 指定生成jar包的名稱
  • MANIFEST.MF com commons-lang3-3.4.jar 要打包的文件
    成功之后會(huì)在當(dāng)前文件夾下生成一個(gè)compile.jar


    image.png
  1. 運(yùn)行
    執(zhí)行:java -jar compile.jar
    輸出結(jié)果:Hello zhangsan

jar包結(jié)構(gòu)

可借助IntelliJ IDEA來查看壹士,圖形化的結(jié)構(gòu)看起來更清晰


image.png

根目錄下是

  • com 就是我們的.class文件
  • commons-lang3-3.4.jar 依賴的外部jar包
  • META-INF 放著MANIFEST.MF磷雇,這個(gè)文件不可少,文件的內(nèi)容也不能隨意改動(dòng)


    image.png

    可以看出躏救,文件內(nèi)容與我們打包之前的基本沒有變化倦春,只是多了一個(gè)Created-By
    執(zhí)行java -jar命令時(shí),就是根據(jù)Main-Class找到程序的入口,通過Class-Path找到依賴的外部jar包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末睁本,一起剝皮案震驚了整個(gè)濱河市尿庐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呢堰,老刑警劉巖抄瑟,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異枉疼,居然都是意外死亡皮假,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門骂维,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惹资,“玉大人,你說我怎么就攤上這事航闺⊥什猓” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵潦刃,是天一觀的道長(zhǎng)侮措。 經(jīng)常有香客問我,道長(zhǎng)乖杠,這世上最難降的妖魔是什么分扎? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮胧洒,結(jié)果婚禮上畏吓,老公的妹妹穿的比我還像新娘。我一直安慰自己卫漫,他們只是感情好菲饼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汛兜,像睡著了一般巴粪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粥谬,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天肛根,我揣著相機(jī)與錄音,去河邊找鬼漏策。 笑死派哲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掺喻。 我是一名探鬼主播芭届,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼储矩,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了褂乍?” 一聲冷哼從身側(cè)響起持隧,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逃片,沒想到半個(gè)月后屡拨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡褥实,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年呀狼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片损离。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哥艇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出僻澎,到底是詐尸還是另有隱情貌踏,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布怎棱,位于F島的核電站哩俭,受9級(jí)特大地震影響绷跑,放射性物質(zhì)發(fā)生泄漏拳恋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一砸捏、第九天 我趴在偏房一處隱蔽的房頂上張望谬运。 院中可真熱鬧,春花似錦垦藏、人聲如沸梆暖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轰驳。三九已至,卻和暖如春弟灼,著一層夾襖步出監(jiān)牢的瞬間级解,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工田绑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勤哗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓掩驱,卻偏偏與公主長(zhǎng)得像芒划,于是被迫代替她去往敵國(guó)和親冬竟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理民逼,服務(wù)發(fā)現(xiàn)泵殴,斷路器,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評(píng)論 6 342
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,112評(píng)論 25 707
  • Do something everyday that you don't want to do, this is ...
    風(fēng)中白樺閱讀 303評(píng)論 0 0
  • 有人說夫妻性格要互補(bǔ)拼苍,比如一個(gè)快一個(gè)慢袋狞,這樣可以中和出一個(gè)不快不慢的中間性格。有人說兩個(gè)人要在節(jié)奏上能保持一致映屋,一...
    Lola歡閱讀 1,074評(píng)論 0 0