亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java命令行下Jar包打包小結

2024-07-13 10:15:06
字體:
來源:轉載
供稿:網友

jar包打包實現

jar包打包可以使用jar指令實現打包,在命令行中輸入jar可以查看jar指令的內容

命令行Jar包打包,Jar包,打包,命令行

從最后顯示的兩個示例看出存在兩種打包的方法,兩者的區別就是是否使用自己定義的MANIFEST清單文件。第一個示例沒有使用MANIFEST文件進行打包,所以最終生成的jar包中MANIFEST文件為默認文件,這種方式適用于比較簡單的jar包結構,不存在其他jar包依賴以及生成的jar包不需要可執行。這種方式生成的jar包不能使用java -jar XXX.jar命令執行,因為MANIFEST文件中未指定程序入口。而第二個實例是比較常用的打包方式,即是使用自定義的MANIFEST文件參與打包,這樣能夠實現往包中添加依賴,并且可以指定程序入口,實現java -jar XXX.jar 直接運行jar包。

第一種簡單的打包方式

最簡單的就是在當前文件夾下將編譯的class字節碼文件進行打包輸出。示例如下:
編寫三個java文件,test1.java test2.java 以及Main.java

public class test1{  public static void main(String[] args)  {  }  public void display()  {    System.out.println("this is class test1");  }}

以及test2.java 文件

public class test2{  public static void main(String[] args)  {  }  public void display()  {    System.out.println("this is class test2");  }}

Main.java

public class Main{  public static void main(String[] args)  {    for(String a:args)    {      System.out.println("給定的參數"+a);    }    test1 t1 = new test1();    t1.display();    test2 t2 = new test2();    t2.display();  }}

命令行下將這三個文件進行編譯,使用javac命令實現編譯。

命令行Jar包打包,Jar包,打包,命令行

用jar指令將編譯的class文件打包

命令行Jar包打包,Jar包,打包,命令行

打包過程中有顯示已添加清單。用解壓工具打開生成的test.jar包,可以看到如下的結構:

命令行Jar包打包,Jar包,打包,命令行

除了編譯的三個class文件外多了一個META-INF文件夾,里面有一個MANIFEST.MF(清單文件)的文件,這個文件的作用非常重要,后面說明。我們先看它里面的內容

命令行Jar包打包,Jar包,打包,命令行

非常簡單的清單,只包含清單版本與java版本。

這個時候執行java -jar test.jar有如下效果:

命令行Jar包打包,Jar包,打包,命令行

沒有主清單屬性報錯。這是因為我們使用第一種方法生成jar使用了默認的清單,默認清單沒有指定程序入口,所以出錯。
可以直接更改jar包中的MANIFEST文件(解壓工具打開,更改后保存),改成如下效果:

命令行Jar包打包,Jar包,打包,命令行

再一次執行java -jar test.jar 后程序輸入正確內容:

命令行Jar包打包,Jar包,打包,命令行

在MANIFEST文件中添加了Main-Class屬性指定了程序入口,實現了直接執行jar文件。
所以說使用默認的MANIFEST是不能直接執行jar文件,要么使用自己定義的MANIFEST文件打包,要么更改包中的MANIFEST文件。

第二種打包方式

第二種打包方式更加通用,一般情況下java文件第一行都是package XXX;即是包名,也決定了編譯后的class文件存在的路徑。當有多個java文件要編譯打包并且他們存在不同的包名時,如果還是按照第一種方法打包時一個文件一個文件的寫非常不現實,所以有了第二種方法。將所有要打包的class文件存在的目錄以及依賴的jar包全部放在一個根文件夾里面(比如是foo),然后編寫MANIFEST清單文件,指定程序入口以及其他添加的依賴的jar包。在執行指令:

命令行Jar包打包,Jar包,打包,命令行

注意 上面的指令中foo/ 文件夾后面有一個空格還有一個點

下面看一個例子

同樣還是test1.java與test2.java以及Main.java 但是各自有自己的包名。

package cn.mytest1;public class test1{  public static void main(String[] args)  {  }  public void display()  {    System.out.println("this is class test1");  }}
package cn.mytest2;public class test2{  public static void main(String[] args)  {  }  public void display()  {    System.out.println("this is class test2");  }}
package cn.mymain;import cn.mytest1.test1;import cn.mytest2.test2;public class Main{  public static void main(String[] args)  {    for(String item:args)    {      System.out.println("傳遞參數"+item);    }    test1 t1 = new test1();    test2 t2 = new test2();    t1.display();    t2.display();  }}

同樣使用javac 指令編譯,三個class文件存在于不同的路徑下,因為他們包名不一樣。把編譯號的含有class文件的文件夾全部放在foo文件夾下:

命令行Jar包打包,Jar包,打包,命令行

然后在foo 外面寫一個MANIFEST文件:

命令行Jar包打包,Jar包,打包,命令行

MANIFEST內容如下:

命令行Jar包打包,Jar包,打包,命令行

注意:MANIFEST 文件最后一行是空行。

命令行下執行指令:jar cvfm test.jar MANIFEST.MF -C foo/ .

命令行Jar包打包,Jar包,打包,命令行

在命令行下測試jar包是否能夠直接運行了,使用指令java -jar test.jar

命令行Jar包打包,Jar包,打包,命令行

正確打包,成功運行jar.

MANIFEST文件介紹

通過上面的兩個例子,可以看到MANIFEST文件對于jar打包都是必須的。MANIFEST文件描述了打包后的jar文件的詳細信息,存在于打包后的META-INF 的文件夾.一個簡單的MANIFEST文件主要內容如下:

命令行Jar包打包,Jar包,打包,命令行

主要就是Manifest-Version Main-Class Class-Path這三個屬性在制作jar包時非常重要.Manifest-Version 是版本號,照著寫就行。Main-Class則是jar包的入口程序,指定運行的類的全稱(一定要包含包名),這樣可以使用java -jar name.jar直接運行jar包。第三個Class-Path是指的打包時需要依賴的其他jar包,打包的時候自己的程序中也可能含有其他的jar包所以要添加依賴。

注意每個MANIFEST屬性冒號與內容之間都有一個空格,并且寫完后最后還要留有一行空行,不然運行時還是出現找不到主清單屬性的錯誤

小結

jar文件打包容易出錯的地方就是Manifest清單文件的編寫,容易出一些格式上的錯誤比如屬性的冒號和內容之間少空格,Class-Path中添加依賴之間沒有空格,依賴文件過多,多行書寫的時候每行開頭沒加空格,文件最后一行沒有空行等等。寫MANIFEST文件的時候注意這些關鍵的地方就不會在打包上面耗費太多的時間。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
92看片淫黄大片欧美看国产片| 2019中文字幕在线观看| 国产成人激情小视频| 日韩欧美在线免费观看| 亚洲欧美综合精品久久成人| 亚洲国产精彩中文乱码av| 久久黄色av网站| 91久久国产婷婷一区二区| 2024亚洲男人天堂| 国产69久久精品成人| 热99精品只有里视频精品| 成人性教育视频在线观看| 欧美性xxxx| 高清欧美性猛交xxxx黑人猛交| 高跟丝袜一区二区三区| 精品视频www| 日本91av在线播放| 狠狠综合久久av一区二区小说| 国产精品视频区| 国产综合久久久久久| 日日骚久久av| 欧美性高跟鞋xxxxhd| 国产日韩在线亚洲字幕中文| 国产精品嫩草视频| 欧美视频在线免费| 国产精自产拍久久久久久蜜| 在线视频免费一区二区| 久久精品国产91精品亚洲| 国产99视频在线观看| 亚洲精品大尺度| 精品一区二区三区四区| 91av在线国产| 精品成人69xx.xyz| 在线a欧美视频| 欧美性开放视频| 最近2019免费中文字幕视频三| 国语自产在线不卡| 亚洲男人的天堂网站| 最新国产精品亚洲| 亚洲午夜av久久乱码| 欧美亚洲视频在线看网址| 欧美精品videosex极品1| 亚洲成人网久久久| 欧美精品激情视频| 久久婷婷国产麻豆91天堂| 精品久久久久久久久久久久久| wwwwwwww亚洲| 韩国三级日本三级少妇99| 日韩欧美亚洲一二三区| 欧美精品免费在线| 亚洲成人网久久久| 国产精品综合久久久| 国模精品一区二区三区色天香| 国产精品网站大全| 国产欧美欧洲在线观看| 亚洲美女自拍视频| 青草青草久热精品视频在线观看| 久久成人在线视频| 精品视频久久久| 日韩美女中文字幕| 97在线看免费观看视频在线观看| 色综合五月天导航| 国产精品18久久久久久麻辣| 色综合色综合久久综合频道88| 久久亚洲国产精品成人av秋霞| 97欧美精品一区二区三区| 国产一区二区三区中文| 久久久人成影片一区二区三区观看| 国产亚洲视频在线观看| 欧美久久精品一级黑人c片| 亚洲精品成a人在线观看| 国产美女扒开尿口久久久| 国产精品视频导航| 成人欧美一区二区三区在线| 2019日本中文字幕| 成人美女免费网站视频| 97精品久久久| 亚洲3p在线观看| 中文.日本.精品| 大桥未久av一区二区三区| 亚洲四色影视在线观看| 插插插亚洲综合网| 亚洲人成电影网站色…| 日本中文字幕不卡免费| 国产精品福利在线| www.99久久热国产日韩欧美.com| 久久久久久久久久久免费| 正在播放欧美一区| 久久99精品国产99久久6尤物| 国产午夜精品理论片a级探花| 97视频人免费观看| 日韩在线观看成人| 亚洲第一在线视频| 亚洲a一级视频| 日韩欧美中文在线| 日韩有码片在线观看| 日韩国产高清视频在线| 日韩毛片在线看| 欧美成人午夜视频| 夜夜躁日日躁狠狠久久88av| 狠狠综合久久av一区二区小说| 欧美插天视频在线播放| 日韩一区视频在线| 国产免费一区二区三区在线观看| 97视频色精品| 91精品国产高清自在线看超| 亚洲性视频网站| 亚洲18私人小影院| 精品国产91久久久久久老师| 91精品国产自产在线老师啪| 美日韩精品视频免费看| 国产日韩在线亚洲字幕中文| 国产精品丝袜久久久久久不卡| 国产精品女视频| 欧美成人免费网| 成人精品久久av网站| 91成人国产在线观看| 最近2019中文字幕一页二页| 国产精品成人一区二区| 亚洲激情视频在线播放| 欧美在线视频在线播放完整版免费观看| 日韩国产精品视频| 亚洲欧美日韩高清| 午夜精品三级视频福利| 国产精品欧美日韩| 国产精品免费看久久久香蕉| 国产精品久久久久久五月尺| 久久精品国产久精国产思思| 久久久中精品2020中文| 亚州av一区二区| 97视频在线观看亚洲| 国产在线视频2019最新视频| 91av免费观看91av精品在线| 91精品国产自产91精品| 国产91精品在线播放| 欧美—级高清免费播放| 欧美日韩高清在线观看| 亚洲色图国产精品| 亚洲激情久久久| 国产免费成人av| 久久精品精品电影网| 中文字幕一区二区精品| 尤物精品国产第一福利三区| 91av视频在线观看| 性亚洲最疯狂xxxx高清| 久久久久久久网站| 日韩毛片中文字幕| 欧美午夜xxx| 亚洲欧美国产一区二区三区| 亚洲精品美女视频| 久久精品欧美视频| 欧美中文在线观看国产| 狠狠色狠狠色综合日日五| 欧美大胆在线视频| 91精品久久久久久久久久久| 欧美激情在线观看视频| 亚洲男人的天堂在线播放| 亚洲欧美日韩一区二区在线| 国产精品成人国产乱一区| 亚洲天堂av在线免费| 国产玖玖精品视频| 精品久久久久久久久久| 亚洲国产福利在线| 亚洲女人被黑人巨大进入al|