Java創(chuàng)建可執(zhí)行的Jar文件的方法實(shí)踐
在Java中,通常將多個(gè)類合并到一個(gè).jar(“ java歸檔文件”)文件中。庫(kù)類以這種方式存儲(chǔ)。較大的項(xiàng)目使用jar文件。您也可以創(chuàng)建結(jié)合了多個(gè)類的自己的jar文件。
jar文件是使用JDK的jar.exe實(shí)用程序創(chuàng)建的。 通過(guò)告訴jar.exe哪個(gè)類具有main,可以使jar文件可運(yùn)行。 為此,您需要?jiǎng)?chuàng)建一個(gè)清單文件。 清單是帶有“ Main-Class”指令的單行文本文件。 例如:
Main-Class: io.github.jast90.test.Main
該行必須以換行符結(jié)尾。(即:多一行)
用主類清單創(chuàng)建的jar文件既可以用作庫(kù),也可以用作可運(yùn)行的jar。 如果將其用作庫(kù),則可以編輯和編譯jar中包含的任何類,然后將其添加到您的項(xiàng)目中。 然后它將覆蓋jar文件中的那個(gè)。
您可以在任何文本編輯器中創(chuàng)建清單文件,甚至可以使用MS-DOS echo命令創(chuàng)建清單文件。 您可以為清單文件指定任何名稱,但最好使用一些標(biāo)準(zhǔn)名稱,例如manifest.txt。
有了清單并編譯完所有類后,您需要運(yùn)行JDK的jar.exe實(shí)用程序。 它位于JDK的bin文件夾中,與javac.exe和java.exe相同。 jar.exe接受命令行參數(shù); 如果不帶任何參數(shù)運(yùn)行它,它將顯示用法信息和示例。 你需要
jar cvfm MyJarName.jar manifest.txt *.class
cvfm的意思是“創(chuàng)建一個(gè)jar;顯示詳細(xì)輸出;指定輸出jar文件名;指定清單文件名。” 這之后是您希望為jar文件指定的名稱,清單文件的名稱以及要包含在jar中的.class文件的列表。 * .class表示當(dāng)前目錄中的所有類文件。
實(shí)際上,如果清單僅包含Main-Class指令,則可以使用e開關(guān)(而不是m)直接在jar.exe的命令行上指定主類。 這樣就不需要單獨(dú)的清單文件了; jar將為您添加所需的清單到您的jar文件中。 例如:
jar cvfe MyJarName.jar MyMainClass *.class
以下是在Eclipse中創(chuàng)建jar文件的參考,IntelliJ DEA中創(chuàng)建Jar文件的參考,在Maven創(chuàng)建Jar文件的參考,以及在命令提示符和JCreator中執(zhí)行此操作的詳細(xì)步驟。
在Eclipse中創(chuàng)建jar文件
在Eclipse幫助內(nèi)容中,展開“ Java開發(fā)用戶指南” ==>“Tasks” ==>“Creating JAR files.”。按照“Creating a new JAR file”或“Creating a new runnable JAR file.”中的說(shuō)明進(jìn)行操作。
出于某種原因,JAR File和Runnable JAR File命令位于File菜單下:?jiǎn)螕鬍xport …并展開Java節(jié)點(diǎn)。
在IntelliJ DEA中創(chuàng)建Jar文件
File -> Project Structure…->Project Settings->Artifacts-> + ->jar-> 選擇From modules with dependencies…->選擇module、Main Class、JAR files from libraries -> 勾選include in project build
在Maven創(chuàng)建Jar文件
在pom.xml文件中的maven-jar-plugin中指定mainClass,如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>io.github.jast90.java.api.HashMapAnalyzer</mainClass> </manifest> </archive> </configuration> </plugin>
在JCreator中創(chuàng)建一個(gè)jar文件
您可以配置一個(gè)“tool”,以自動(dòng)執(zhí)行jar創(chuàng)建過(guò)程。您只需要做一次。
- 單擊Configure/Options
- 單擊左欄中的Tools。
- 單擊New,然后選擇Create Jar file。
- 在Tools下方的左列中,單擊新創(chuàng)建的條目Create Jar File。
- 編輯標(biāo)有“Arguments:”的中間行:輸入
cvfm $[PrjName].jar manifest.txt *.class
- 單擊OK。
現(xiàn)在為您的程序設(shè)置一個(gè)項(xiàng)目,創(chuàng)建一個(gè)清單文件manifest.txt或復(fù)制并編輯一個(gè)現(xiàn)有的項(xiàng)目。 將manifest.txt放在.class文件所在的文件夾中。 在“ View/Toolbars”下,選中“Tools”工具欄。 單擊相應(yīng)的tool按鈕,或者按Ctrl-1(如果這是第n個(gè)工具,則按Ctrl-n)以運(yùn)行“創(chuàng)建Jar文件”工具。
使用Windows資源管理器,轉(zhuǎn)到您剛創(chuàng)建的jar文件,然后雙擊運(yùn)行它。
在命令提示符下創(chuàng)建jar文件
- 啟動(dòng)命令提示符。
- 導(dǎo)航到保存您的類文件的文件夾:
C:\>cd \mywork
- 設(shè)置路徑以包含JDK的bin。例如:
C:\mywork> path c:\Program Files\Java\jdk1.7.0_25\bin;%path%
- 編譯你的類
C:\mywork> javac *.java
- 創(chuàng)建一個(gè)清單文件和您的jar文件:
C:\mywork> echo Main-Class: io.github.jast90.test.Main >manifest.txt C:\mywork> jar cvfm Craps.jar manifest.txt *.class 或者 C:\mywork> jar cvfe Craps.jar Craps *.class
- 測(cè)試你的jar
C:\mywork> Craps.jar 或者 C:\mywork> java -jar Craps.jar
參考
- https://www.skylit.com/javamethods/faqs/createjar.html
- https://docs.oracle.com/javase/8/docs/technotes/tools/unix/javac.html#BHCBDCJI
- https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jar.html#BGBFFFGG
- https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BGBCIEFC
到此這篇關(guān)于Java創(chuàng)建可執(zhí)行的Jar文件的方法實(shí)踐的文章就介紹到這了,更多相關(guān)Java創(chuàng)建可執(zhí)行Jar文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何基于JWT實(shí)現(xiàn)接口的授權(quán)訪問(wèn)詳解
授權(quán)是最常見的JWT使用場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何基于JWT實(shí)現(xiàn)接口的授權(quán)訪問(wèn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02Springboot中com.mysql.cj.jdbc.Driver在yml文件中爆紅的原因解讀
這篇文章主要介紹了Springboot中com.mysql.cj.jdbc.Driver在yml文件中爆紅的原因解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Java設(shè)計(jì)模式之備忘錄模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院
我們?cè)诰幊痰臅r(shí)候,經(jīng)常需要保存對(duì)象的中間狀態(tài),當(dāng)需要的時(shí)候,可以恢復(fù)到這個(gè)狀態(tài)。接下來(lái)通過(guò)本文給大家分享java設(shè)計(jì)模式之備忘錄模式,感興趣的的朋友一起看看吧2017-08-08servlet上傳文件實(shí)現(xiàn)代碼詳解(四)
這篇文章主要為大家詳細(xì)介紹了servlet上傳文件的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09在Spring框架下配置Quartz集群的詳細(xì)步驟(MySQL數(shù)據(jù)源)
Quartz 是一個(gè)功能強(qiáng)大的調(diào)度庫(kù),可以在 Java 應(yīng)用中用于執(zhí)行定時(shí)任務(wù),本文將介紹如何在 Spring 框架下配置 Quartz 集群,并使用 MySQL 作為數(shù)據(jù)源來(lái)存儲(chǔ)調(diào)度信息,文中有詳細(xì)的代碼供大家參考,需要的朋友可以參考下2025-01-01Java微信公眾平臺(tái)之群發(fā)接口(高級(jí)群發(fā))
這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)之群發(fā)接口,高級(jí)群發(fā)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Spring Boot中使用Activiti的方法教程(二)
工作流(Workflow),就是“業(yè)務(wù)過(guò)程的部分或整體在計(jì)算機(jī)應(yīng)用環(huán)境下的自動(dòng)化”,下面這篇文章主要給大家介紹了關(guān)于Spring Boot中使用Activiti的相關(guān)資料,需要的朋友可以參考下2018-08-08