導(dǎo)讀 | 在本文中,我們將展示如何創(chuàng)建Java應(yīng)用程序并將其捆綁到JAR文件中,并演示如何從Linux終端執(zhí)行.jar文件。 |
JAR(Java ARchive)是與平臺(tái)無關(guān)的文件格式,用于將許多Java類文件以及關(guān)聯(lián)的元數(shù)據(jù)和資源(如文本,圖像等)聚合到單個(gè)文件中進(jìn)行分發(fā)。
它允許Java運(yùn)行時(shí)在一個(gè)存檔文件中有效地部署整個(gè)應(yīng)用程序,并提供許多好處,例如安全性,可以壓縮其元素,縮短下載時(shí)間,允許封裝和版本控制,支持可移植性。它還支持?jǐn)U展包裝。
在本文中,我們將展示如何創(chuàng)建一個(gè)簡(jiǎn)單的Java應(yīng)用程序并將其捆綁到一個(gè)JAR文件中,并演示如何從Linux終端執(zhí)行.jar文件。
為此,必須安裝java命令行工具來啟動(dòng)Java應(yīng)用程序,并使用-jar標(biāo)志執(zhí)行封裝在JAR文件中的程序。使用此標(biāo)志時(shí),指定的JAR文件是所有用戶類的源,并忽略其他類路徑設(shè)置。
如何在Linux中創(chuàng)建JAR文件
1.首先,為一個(gè)名為HowtoingApp的應(yīng)用程序編寫一個(gè)帶有main方法的簡(jiǎn)單Java類,用于演示目的。
$ vim HowtoingApp.java
將以下代碼復(fù)制并粘貼到HowtoingApp.java文件中。
public class HowtoingApp { public static void main(String[] args){ System.out.println(" Just executed HowtoingApp! "); } }
保存文件并關(guān)閉它。
2.接下來,我們需要使用javac和jar實(shí)用程序?qū)㈩惥幾g并打包到JAR文件中,如圖所示。
$ javac -d . HowtoingApp.java $ ls $ jar cvf howtoingapp.jar HowtoingApp.class $ ls
3.創(chuàng)建howtoingapp.jar后,現(xiàn)在可以使用java命令執(zhí)行該文件,如圖所示。
$ java -jar howtoingapp.jar no main manifest attribute, in howtoingapp.jar
從上面命令的輸出,我們遇到了一個(gè)錯(cuò)誤。JVM(Java虛擬機(jī))無法找到我們的主清單屬性,因此無法找到包含main方法的主類(public static void main(String [] args))。
JAR文件應(yīng)該有一個(gè)清單,其中包含Main-Class形式的一行:classname,它定義了帶有main方法的類,該方法用作應(yīng)用程序的起點(diǎn)。
4.要解決上述錯(cuò)誤,我們需要更新JAR文件以包含清單屬性和代碼。讓我們創(chuàng)建一個(gè)MANIFEST.MF文件。
$ vim MANIFEST.MF
將以下行復(fù)制并粘貼到MANIFEST.MF文件中。
Main-Class: HowtoingApp
保存文件,然后使用以下命令將文件MANIFEST.MF添加到howtoingapp.jar。
$ jar cvmf MANIFEST.MF howtoingapp.jar HowtoingApp.class
5.最后,當(dāng)我們?cè)俅螆?zhí)行JAR文件時(shí),它應(yīng)該產(chǎn)生預(yù)期的結(jié)果,如輸出中所示。
$ java -jar howtoingapp.jar Just executed HowtoingApp!
有關(guān)更多信息,請(qǐng)參閱java,javac和jar命令手冊(cè)頁(yè)。
$ man java $ man javac $ man jar