Java中如何打包應用 掌握JAR文件創建

Java應用打包成jar文件有兩種主要方式:命令行和構建工具。1. 命令行方式需先編譯代碼,創建manifest.mf指定主類,再用jar命令打包;2. maven通過配置pom.xml中的maven-jar-plugin插件,運行mvn clean package生成jar;3. gradle在build.gradle中配置jar任務,運行gradle clean build生成jar。meta-inf目錄存放元數據,其中manifest.mf定義jar版本、主類等信息。若要包含第三方依賴,可通過構建工具生成“胖jar”,或在manifest.mf中指定class-path屬性。運行jar使用java -jar命令,如:java -jar myjar.jar,并可附加參數。

Java中如何打包應用 掌握JAR文件創建

Java應用打包,核心就是把你的代碼、依賴、資源文件,按照一定的規范,放到一個壓縮包里,方便分發和運行。這個壓縮包,就是JAR文件。

Java中如何打包應用 掌握JAR文件創建

解決方案

Java中如何打包應用 掌握JAR文件創建

打包Java應用成JAR文件,主要有兩種方式:命令行和使用構建工具(比如Maven或Gradle)。

立即學習Java免費學習筆記(深入)”;

命令行方式

Java中如何打包應用 掌握JAR文件創建

  1. 編譯Java代碼: 確保你的Java源代碼已經編譯成.class文件。

    javac MyClass.java
  2. 創建MANIFEST.MF文件: 這個文件描述了JAR文件的元數據,比如主類。在META-INF目錄下創建MANIFEST.MF文件,內容類似:

    Manifest-Version: 1.0 Main-Class: MyClass

    Main-Class指定了程序的入口類。

  3. 創建JAR文件: 使用jar命令打包。

    jar cfm MyJar.jar META-INF/MANIFEST.MF *.class

    c表示創建,f表示指定JAR文件名,m表示指定MANIFEST文件。*.class表示包含所有編譯后的類文件。

使用Maven

Maven通過pom.xml文件管理項目的依賴和構建過程。

  1. 配置pom.xml: 在pom.xml文件中,指定maven-jar-plugin插件。

    <build>     <plugins>         <plugin>             <groupId>org.apache.maven.plugins</groupId>             <artifactId>maven-jar-plugin</artifactId>             <version>3.2.0</version>             <configuration>                 <archive>                     <manifest>                         <mainClass>com.example.MyClass</mainClass>                     </manifest>                 </archive>             </configuration>         </plugin>     </plugins> </build>

    mainClass指定主類。

  2. 打包: 在項目根目錄下運行命令:

    mvn clean package

    Maven會自動編譯代碼、下載依賴,并生成JAR文件到target目錄下。

使用Gradle

Gradle使用build.gradle文件進行項目配置。

  1. 配置build.gradle:

    plugins {     id 'java' }  jar {     manifest {         attributes 'Main-Class': 'com.example.MyClass'     }     from {         configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }     } }

    Main-Class指定主類。

  2. 打包: 運行命令:

    gradle clean build

    Gradle會在build/libs目錄下生成JAR文件。

JAR文件中的META-INF目錄有什么作用?

META-INF目錄是JAR文件中的一個特殊目錄,用于存放JAR文件的元數據信息。最重要的文件就是MANIFEST.MF,它定義了JAR文件的版本、創建者、主類等信息。其他文件可能包括簽名信息,用于驗證JAR文件的完整性和來源??梢哉f,沒有META-INF目錄,JAR文件就缺少了靈魂,程序不知道從哪里開始運行。

如何在JAR文件中包含依賴的第三方庫?

這是個很關鍵的問題。直接把所有依賴的JAR文件放到一起打包成一個大的JAR文件(也叫“胖JAR”或“uber JAR”)是一種常見的做法。Maven和Gradle都提供了相應的插件來實現這個功能。比如Maven的maven-assembly-plugin和Gradle的shadowJar插件。另一種方式是創建可執行JAR文件時,將依賴的JAR文件放在同一目錄下,并在MANIFEST.MF文件中指定Class-Path屬性,告訴jvm去哪里尋找依賴的庫。

如何運行JAR文件?

運行JAR文件很簡單,使用java -jar命令即可。

java -jar MyJar.jar

如果JAR文件需要額外的參數,可以直接在命令后面添加。例如:

java -jar MyJar.jar arg1 arg2

但要注意,如果你的JAR文件沒有指定主類,或者主類不存在,運行時會報錯。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享