有不少朋友問(wèn)我怎么樣生成jar文件,為什么我的jar文件可以雙擊執行,每次我都會(huì )解釋?zhuān)疑傻膉ar是在JBuilder中完成的,但仍有人希望知道如何使用命令行生成jar文件,因此,我特地抽點(diǎn)時(shí)間來(lái)整理一下jar的命令行用法。
JAR 是JavaTM Archive file的縮寫(xiě),jar可將多個(gè)文件打包在一個(gè)文件中進(jìn)行發(fā)布。通常,jar文件中會(huì )包含多個(gè)類(lèi)文件和程序運行時(shí)所需要的資源文件,使用jar文件有以下好處:
以上不一而足,具體可以參看http://java.sun.com/docs/books/tutorial/jar/。
生成jar文件
在命令行下生成jar文件需要使用jar命令,在命令行方式下輸入jar,可以看到:

jar的生成并不復雜,上面已經(jīng)說(shuō)得很清楚了,只不過(guò)需要注意的是,在生成jar文件后,需要注意包內的文件組織結構的正確性,以“連連看”游戲為例子,下載后的文件為Kyodai.jar,如果使用winrar等工具解開(kāi)該文件,可以發(fā)現,其文件的組織結構為:

和我在寫(xiě)程序的時(shí)候的結構是一模一樣的,現在,將解開(kāi)的文件再生成jar文件,可以使用如下命令:

(以上去掉了參數v,.表示當前文件夾下的所有文件)
生成可執行的jar
上面,我們已經(jīng)生成了jar,然而,該程序還無(wú)法通過(guò)雙擊執行,程序報錯:

這是由于java并不知道在這個(gè)jar包中,需要執行的是哪一個(gè)class文件,因此,我們需要指定雙擊時(shí)執行的類(lèi)文件哪個(gè)。
因此,我們再建立一個(gè)“MANIFEST.MF”,在里面寫(xiě)上如下內容:

第一行指明了該jar文件的版本號,第二行Main-Class表示可執行的類(lèi)文件為kyodai.Kyodai(這和在命令行方式下使用 java kyodai.Kyodai執行該程序一樣),然后,再建立一個(gè)META-INF文件夾,將MANIFEST.MF文件copy進(jìn)去,最后,再將META-INF打包到該jar文件中,這樣,一個(gè)可執行的jar文件就生成了。

常見(jiàn)問(wèn)題
有些朋友由于在安裝winrar等壓縮軟件時(shí),jar文件會(huì )被其類(lèi)程序所關(guān)聯(lián),因此,雙擊時(shí)并不會(huì )執行jar程序,而是調用此類(lèi)軟件來(lái)打開(kāi)jar文件,碰到這種情況,將文件的關(guān)聯(lián)去掉即可。
聯(lián)系客服