最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

將Java項目打包為可執(zhí)行JAR 文件的四種方法

 更新時間:2025年08月18日 11:16:54   作者:xienda  
本文主要介紹了Java項目打包為可執(zhí)行JAR的四種方法,包括IDE配置、Maven/Gradle插件、手動創(chuàng)建及依賴管理,具有一定的參考價值,感興趣的可以了解一下

我將詳細介紹將 Java 項目打包為可執(zhí)行 JAR 文件的完整流程,包括使用 IDE 和命令行兩種方法。

方法一:使用 IntelliJ IDEA 打包

步驟 1:配置項目結(jié)構(gòu)

  • 打開項目
  • 點擊 File > Project Structure
  • 在 Project Settings 中選擇 Artifacts
  • 點擊 + 號 > JAR > From modules with dependencies

步驟 2:配置主類

  • 在 "Main Class" 字段選擇主類:例如:com.example.demo.DesktopFileSearch
  • 確保選擇 "extract to the target JAR" 選項
  • 點擊 OK

步驟 3:構(gòu)建 JAR 文件

  • 點擊 Build > Build Artifacts
  • 選擇您的 artifact > Build
  • 生成的 JAR 文件將位于 out/artifacts/ 目錄下

方法二:使用 Maven 打包

步驟 1:添加 Maven 插件

在 pom.xml 中添加以下插件配置:

<build>
    <plugins>
        <!-- 編譯插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        
        <!-- 創(chuàng)建可執(zhí)行 JAR 的插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.example.demo.DesktopFileSearch</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        
        <!-- 包含依賴的插件(可選) -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.demo.DesktopFileSearch</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

步驟 2:執(zhí)行打包命令

在項目根目錄(包含 pom.xml 的目錄)打開命令行,執(zhí)行:

mvn clean package

步驟 3:獲取 JAR 文件

  • 生成的 JAR 文件位于 target/ 目錄
  • 如果使用了 assembly 插件,會生成兩個文件:
    • your-project-name.jar - 不含依賴
    • your-project-name-jar-with-dependencies.jar - 包含所有依賴

方法三:使用 Gradle 打包

步驟 1:配置 build.gradle

在 build.gradle 文件中添加:

plugins {
    id 'java'
    id 'application'
}

application {
    mainClassName = 'com.example.demo.DesktopFileSearch'
}

jar {
    manifest {
        attributes 'Main-Class': 'com.example.demo.DesktopFileSearch'
    }
    
    // 包含所有依賴(可選)
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

步驟 2:執(zhí)行打包命令

在項目根目錄執(zhí)行:

gradle clean build

步驟 3:獲取 JAR 文件

生成的 JAR 文件位于 build/libs/ 目錄

方法四:手動創(chuàng)建 JAR(不使用構(gòu)建工具)

步驟 1:編譯 Java 文件

javac -d target/classes src/main/java/com/example/demo/*.java

步驟 2:創(chuàng)建清單文件

創(chuàng)建 META-INF/MANIFEST.MF 文件:

Manifest-Version: 1.0
Main-Class: com.example.demo.DesktopFileSearch
Class-Path: .

步驟 3:打包為 JAR

jar cfm target/your-app.jar META-INF/MANIFEST.MF -C target/classes .

測試 JAR 文件

運行 JAR 文件以確保正確打包:

java -jar your-app.jar

常見問題解決

問題:運行 JAR 時出現(xiàn) "No main manifest attribute"

解決方案

  • 確保 MANIFEST.MF 文件包含正確的 Main-Class 屬性
  • 使用 jar tf your-app.jar 檢查清單文件是否正確包含
  • 如果使用 Maven/Gradle,確保插件配置正確

問題:缺少依賴項

解決方案

  1. 使用包含依賴的打包方式(如 maven-assembly-plugin)

  2. 將所有依賴 JAR 放在同一目錄,使用 -cp 指定類路徑:

    java -cp "your-app.jar:libs/*" com.example.demo.DesktopFileSearch

問題:資源文件未包含

解決方案

  1. 確保資源文件位于正確位置(如 src/main/resources)

  2. 在構(gòu)建配置中包含資源目錄:

    java -cp "your-app.jar:libs/*" com.example.demo.DesktopFileSearch

最佳實踐

版本控制:在 JAR 文件名中包含版本號

依賴管理

  • 對于簡單項目,使用包含依賴的單一 JAR
  • 對于大型項目,使用 lib 目錄存放依賴

簽名驗證:使用 jarsigner 對 JAR 進行簽名

jarsigner -keystore mykeystore.jks -storepass password -keypass password your-app.jar mykey

瘦身打包:使用 ProGuard 或其它工具減小 JAR 大小

跨平臺測試:在不同操作系統(tǒng)上測試 JAR 文件

總結(jié)打包 Java 應(yīng)用程序為 JAR 文件是分發(fā)和部署的關(guān)鍵步驟。選擇適合您項目的打包方法:

  • 簡單項目:使用 IDE 內(nèi)置的導(dǎo)出功能
  • 標準項目:使用 Maven 或 Gradle 構(gòu)建
  • 需要依賴管理:使用包含依賴的打包方式
  • 特殊需求:手動創(chuàng)建 JAR 文件

完成 JAR 打包后,您可以進一步使用 Launch4j 或 jpackage 工具將其轉(zhuǎn)換為 EXE 文件,創(chuàng)建完整的 Windows 安裝程序。

到此這篇關(guān)于將Java項目打包為可執(zhí)行JAR 文件的文章就介紹到這了,更多相關(guān)java打包jar命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java延遲隊列原理與用法實例詳解

    Java延遲隊列原理與用法實例詳解

    這篇文章主要介紹了Java延遲隊列原理與用法,結(jié)合實例形式詳細分析了延遲隊列的概念、原理、功能及具體使用方法,需要的朋友可以參考下
    2018-09-09
  • Java的設(shè)計模式之代理模式使用詳解

    Java的設(shè)計模式之代理模式使用詳解

    這篇文章主要介紹了Java的設(shè)計模式之代理模式使用詳解,代理模式是23種設(shè)計模式之一,它關(guān)心的主要是過程,而不是結(jié)果,代理模式主要提供了對目標對象的間接訪問方式,即通過代理對象來訪問目標對象,需要的朋友可以參考下
    2024-01-01
  • SpringBoot參數(shù)校驗,消除if else方式

    SpringBoot參數(shù)校驗,消除if else方式

    文章介紹了使用JSR303和Spring Boot中的spring-boot-starter-validation進行數(shù)據(jù)驗證的方法,包括注解使用、分組驗證、嵌套對象校驗、快速失敗配置以及自定義校驗規(guī)則等內(nèi)容
    2026-04-04
  • springboot中如何配置LocalDateTime JSON返回時間戳

    springboot中如何配置LocalDateTime JSON返回時間戳

    這篇文章主要介紹了springboot中如何配置LocalDateTime JSON返回時間戳問題。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • springboot自定義starter示例代碼

    springboot自定義starter示例代碼

    SpringBoot自定義Starter項目的命名建議遵循xxx-spring-boot-starter格式,以避免與官方或第三方Starter產(chǎn)生沖突,核心規(guī)范包括自動裝配文件的配置,旨在通過spring.factories或spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
    2024-11-11
  • IDEA連接mysql數(shù)據(jù)庫報錯的解決方法

    IDEA連接mysql數(shù)據(jù)庫報錯的解決方法

    這篇文章主要介紹了IDEA連接mysql數(shù)據(jù)庫報錯的解決方法,文中有非常詳細的圖文示例,對出現(xiàn)Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ prope報錯的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • 淺談sql_@SelectProvider及使用注意說明

    淺談sql_@SelectProvider及使用注意說明

    這篇文章主要介紹了sql_@SelectProvider及使用注意說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 圖文詳解java反射機制及常用應(yīng)用場景

    圖文詳解java反射機制及常用應(yīng)用場景

    這篇文章主要為大家介紹了圖文詳解java反射機制及常用應(yīng)用場景,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • java Thread 多線程

    java Thread 多線程

    本篇文章小編為大家介紹,java Thread 多線程。需要的朋友參考下
    2013-04-04
  • mybatis實現(xiàn)增刪改查_動力節(jié)點Java學(xué)院整理

    mybatis實現(xiàn)增刪改查_動力節(jié)點Java學(xué)院整理

    本文通過實例代碼給大家介紹了mybatis實現(xiàn)增刪改查功能,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-09-09

最新評論

汝城县| 额济纳旗| 竹溪县| 汨罗市| 象州县| 江山市| 桑日县| 九龙坡区| 安岳县| 科技| 闵行区| 云龙县| 棋牌| 安徽省| 富阳市| 府谷县| 东阳市| 会泽县| 留坝县| 宜兰县| 高尔夫| 沈丘县| 五河县| 昌江| 崇文区| 乌鲁木齐市| 循化| 贵港市| 梅河口市| 黎川县| 德令哈市| 西贡区| 台安县| 白朗县| 高要市| 会昌县| 隆德县| 潞城市| 东方市| 丹巴县| 隆回县|