.bat文件和Jar包的生成及運行
1、Jar包簡單介紹
Jar包是Java中所特有的一種壓縮文檔,有點類似於zip包,區別在於Jar包中有一個META-INF\MANIFEST.MF文件(在生成Jar包的過程中會自動創建,具體的后面會進行講解)。
Jar包是由JDK安裝目錄\bin\jar.exe命令生成的,若已成功將其路徑設置在系統環境變量中,就可以在CMD中直接使用jar.exe命令了,而它會調用lib\tool.jar工具包中的類。
2、Jar包常用命令
Jar包生成命令格式:jar {c t x u i }[ v f m n 0 M e ] [-C 目錄] 文件名...
其中,{ctxu}這四個參數必須選則一個,[v f m n 0 M e ]是可選參數,-C指定后面文件所在的目錄,文件名也是必須的(不然沒有源文件,沒有意義,可以同時壓縮多個.class)。
-c 創建一個jar包
-t 顯示jar中的內容列表
-x 解壓jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v生成詳細的報造,並輸出至標准設備
-n 創建新檔案后,執行Pack200規范化
-m 指定MANIFEST.MF文件 (MANIFEST.MF文件中可以對jar包及其中的內容作一些設置)
-0 產生jar包時不對其中的內容進行壓縮處理
-M 不產生所有文件的清單文件(MANIFEST.MF),這個參數與忽略掉-m參數的設置效果類似
-i 為指定的jar文件創建索引文件
-C 表示轉到相應的目錄下執行jar命令,相當於cd到那個目錄,然后不帶-C執行jar命令
在CMD中輸入jar,回車,即會列出關於jar命令的詳細信息。如下圖:
3、Jar包生成准備
之前提到過的MANIFEST.MF文件,在Jar包生成過程中由jar.exe命令自動創建(可以在CMD中敲入jar),默認的信息包括當前的Manifest版本與Java JDK版本。如下圖:
1 Manifest-Version: 1.0 2 Created-By: 1.8.0_25 (Oracle Corporation)
有必要搞清楚的是,Jar包有兩種類型:
a) 生成后可以直接運行,當然,需借助java -jar命令;
b) 被別的類導入工程並調用其方法,類似於Java JDK自帶的Jar包;
由於后者和Java自帶類庫中的那些Jar包用法相同,本篇文章介紹前者——可執行Jar包的制作與運行。注意,對於可執行Jar包,MANIFEST.MF文件的作用主要是指定主類文件名稱(即包含main()方法的.java文件名)。這就需要在Jar生成之前先創建一個文件(文件名不限定,也可以是MANIFEST.MF),內容如下:
1 Manifest-Version: 1.0 2 Created-By: 1.8.0_25 (Oracle Corporation) 3 Main-Class: JarTest 4
即指定了將要生成的Jar包的主類文件名為JarTest(實現文件為JarTest.java)。注意,必須在后面另起一行,即留一空行。
如果找一個Jar包將其解壓,會發現文件夾中包含的全是.class文件,個人認為這樣做的原因為.class利於保密與運行,畢竟.java文件可以直接獲取實現代碼並且要編譯后才能運行。
這里主要是拋磚引玉,所以只是寫一個最為基本的.java文件,總代碼數不足10行。Java文件JarTest.java中代碼如下:
1 import java.util.Scanner; 2 3 public class JarTest { 4 5 public static void main(String[] args){ 6 7 System.out.println("This is the first jar project."); 8 9 Scanner reader=new Scanner(System.in); 10 int i = reader.nextInt(); 11 } 12 13 }
看到代碼,可能有人會奇怪:至於第7行,輸出一行文字標記運行成功,很好理解;那第9行的輸入在這里有必要嗎,答案是肯定的,這樣做是為了后續雙擊運行.bat文件時CMD窗口不會一閃而逝,讓其因IO中斷等待用戶的指令。
有了.java文件,接下來就可以得到.class文件,利用命令javac對.java文件進行編譯即可。雖然很簡單,還是給出過程截圖吧:
順便提一下,利用java命令可以直接運行.class文件,結果圖如下:
那么,到目前為止,制作可執行Jar包的文件都已准備就緒。當前已有文件截圖如下:
4、Jar包生成與運行
利用之前介紹過的Jar包生成命令jar與准備好的.class、MANIFEST.MF文件,制作Jar包JarTest.jar的完整命令如下:
1 jar –cvmf JarTest.jar MANIFEST.MF JarTest.class
然后,就可以運行它了,響應命令與結果如下圖:
5、.bat文件制作
將一些常用的命令制作成一個.bat文件,使用的時候雙擊運行可以,雖然可能有時需要對內容進行細微的改變,但也比一行一行敲命令要方便很多。
這里要制作的.bat文件目的是運行上面生成的Jar包JarTest.jar,方法很簡單:
a) 新建一個文件(后綴改為.bat,文件名稱最好和Jar包一致,養成良好的習慣);
b) 打開,輸入內容為java -jar JarTest.jar;
大功告成,保存之后,直接雙擊運行即可。如之前所述,彈出窗口會一直等待用戶的輸入,這樣方便觀察運行結果,如圖:
注意,雖然運行結果和CMD中敲入命令是一致的,但這里的窗口是雙擊.bat文件后自動彈出的。
6、總結
總的來說,本文介紹的內容是非常基礎的,主要是兩個部分。
第一,Jar包的生成。不管是可執行的還是作為庫文件被導入並調用的,生成的過程和思想是相通的;
第二,.bat文件的制作,這樣做的好處有很多:如命令的整理與復用,運行的方便與高效等。需要注明的是,.bat文件中包含的命令內容並不局限與某一種語言,可以是C、C++、Java及Shell等,也可以是CMD中的命令,如刪除del、重命名ren等。