http://school.cnd8.com/java/jiaocheng/18475.htm
摘要
本文展示如何將不可運行的JAR變?yōu)榭蛇\行的,并且不用直接操作manifest文件。你將學(xué)會(huì )開(kāi)發(fā)一個(gè)短小的程序使得任何JAR文件都可以使用java -jar命令或者通過(guò)在像Windows上雙擊而運行。
你可以將一個(gè)應用的所有類(lèi)和資源打包到一個(gè)JAR文件中。實(shí)際上,那就是jar文件的一個(gè)目的。另外一個(gè)目的是讓用戶(hù)可以非常輕易的執行存儲在JAR文件中的應用,那么為什么當他們可以成為一等公民而和本機可執行程序等同的時(shí)候,我們?yōu)槭裁匆屗麄冎怀袚墓δ芏蔀閖ava世界中的二等公民呢?
要執行一個(gè)jar文件,你可以使用java命令的-jar選項。例如你有一個(gè)可運行的文件名為myjar.jar的JAR文件,因為它是可運行的,你可以像這樣執行它:java -jar myjar.jar
另外,當JRE安裝在像Windows這樣的操作系統上時(shí),將jar文件和JVM關(guān)聯(lián)后你就可以雙擊他們運行應用了。這些JAR必須是可運行的。
問(wèn)題是:你如何讓一個(gè)JAR是可運行的?
manifest文件和Main-Class條目
在大部分JAR文件中,META-INF目錄下會(huì )有一個(gè)MANIFEST.MF文件,在那個(gè)文件中有一個(gè)非凡的條目Main-Class,它告訴java -jar命令去執行那么類(lèi)。
問(wèn)題是你必須自己恰當的將這個(gè)非凡條目加到manifest文件中:它必須位于特定的位置并且必須符合特定的格式,然而有些人不喜歡編輯配置文件。
讓API幫你做
從Java 1.2開(kāi)始引人的java.util.jar包可以讓你操作jar文件(注重:它建立在java.util.zip包的基礎上)。更確切的說(shuō)法是,java.util.jar可以讓你通過(guò)Manifest類(lèi)非常輕易的操作那個(gè)非凡的manifest文件。
讓我們編寫(xiě)一個(gè)程序使用那個(gè)API。首先這個(gè)程序必須知道三件事情:
1. 我們希望可以執行的JAR
2. 我們希望執行的主類(lèi)(這個(gè)類(lèi)必須存在于JAR內)
3. 新的JAR文件的文件名,因為我們不應該簡(jiǎn)單的覆蓋那些文件
編寫(xiě)程序
上面的列表將會(huì )構成我們的程序的參數,基于這一點(diǎn),讓我們?yōu)檫@個(gè)應用挑選一個(gè)合適的名字。MakeJarRunnable聽(tīng)起來(lái)如何?
檢查main的參數
假設我們的main入口是一個(gè)標準的main(String[])方法,我們首先應該檢查程序的參數:
if (args.length != 3) { System.out.println("Usage: MakeJarRunnable " + "
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。