.bat文件和Jar包的生成及運行


.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等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM