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

將Java項(xiàng)目打包為可執(zhí)行JAR文件的完整流程

 更新時(shí)間:2025年08月01日 09:34:42   作者:xienda  
在Java開發(fā)中,我們通常會(huì)將我們的項(xiàng)目打包成可執(zhí)行的Jar包,以便于在其他環(huán)境中部署和運(yùn)行,本文將介紹如何使用IDEA集成開發(fā)環(huán)境將Java項(xiàng)目打包成可執(zhí)行的Jar包,需要的朋友可以參考下

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

方法一:使用 IntelliJ IDEA 打包

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

  • 打開項(xiàng)目
  • 點(diǎn)擊 File > Project Structure
  • 在 Project Settings 中選擇 Artifacts
  • 點(diǎn)擊 + 號(hào) > JAR > From modules with dependencies

步驟 2:配置主類

  • 在 "Main Class" 字段選擇主類:例如:com.example.demo.DesktopFileSearch
  • 確保選擇 "extract to the target JAR" 選項(xiàng)
  • 點(diǎn)擊 OK

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

  • 點(diǎn)擊 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í)行打包命令

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

mvn clean package

步驟 3:獲取 JAR 文件

生成的 JAR 文件位于 target/ 目錄

如果使用了 assembly 插件,會(huì)生成兩個(gè)文件:

  • 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í)行打包命令

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

gradle clean build

步驟 3:獲取 JAR 文件

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

方法四:手動(dòng)創(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 .

測(cè)試 JAR 文件

運(yùn)行 JAR 文件以確保正確打包:

java -jar your-app.jar

常見問題解決

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

解決方案

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

問題:缺少依賴項(xiàng)

解決方案

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

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

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

問題:資源文件未包含

解決方案

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

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

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

最佳實(shí)踐

版本控制:在 JAR 文件名中包含版本號(hào)

依賴管理

  • 對(duì)于簡(jiǎn)單項(xiàng)目,使用包含依賴的單一 JAR
  • 對(duì)于大型項(xiàng)目,使用 lib 目錄存放依賴

簽名驗(yàn)證:使用 jarsigner 對(duì) JAR 進(jìn)行簽名

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

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

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

總結(jié)

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

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

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

以上就是將Java項(xiàng)目打包為可執(zhí)行JAR文件的完整流程的詳細(xì)內(nèi)容,更多關(guān)于Java項(xiàng)目打包可執(zhí)行JAR的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot的ConfigurationProperties或Value注解無(wú)效問題及解決

    SpringBoot的ConfigurationProperties或Value注解無(wú)效問題及解決

    在SpringBoot項(xiàng)目開發(fā)中,全局靜態(tài)配置類讀取application.yml或application.properties文件時(shí),可能會(huì)遇到配置值始終為null的問題,這通常是因?yàn)樵趧?chuàng)建靜態(tài)屬性后,IDE自動(dòng)生成的Get/Set方法包含了static關(guān)鍵字
    2024-11-11
  • 淺談Java線程間通信之wait/notify

    淺談Java線程間通信之wait/notify

    下面小編就為大家?guī)?lái)一篇淺談Java線程間通信之wait/notify。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-06-06
  • Java中的代理模式詳解及實(shí)例代碼

    Java中的代理模式詳解及實(shí)例代碼

    這篇文章主要介紹了Java中的代理模式詳解及實(shí)例代碼的相關(guān)資料,這里附有實(shí)例代碼,需要的朋友可以參考下
    2017-02-02
  • Java編程生產(chǎn)者消費(fèi)者實(shí)現(xiàn)的四種方法

    Java編程生產(chǎn)者消費(fèi)者實(shí)現(xiàn)的四種方法

    Java生產(chǎn)者和消費(fèi)者問題是線程安全模型中的經(jīng)典問題:生產(chǎn)者和消費(fèi)者在同一個(gè)時(shí)間段共用同一個(gè)存儲(chǔ)空間,生產(chǎn)者向存儲(chǔ)空間中添加產(chǎn)品呢,消費(fèi)者取走產(chǎn)品,當(dāng)存儲(chǔ)空間為空時(shí),消費(fèi)者阻塞,當(dāng)存儲(chǔ)空間滿時(shí),生產(chǎn)者阻塞
    2021-10-10
  • springbooot使用google驗(yàn)證碼的功能實(shí)現(xiàn)

    springbooot使用google驗(yàn)證碼的功能實(shí)現(xiàn)

    這篇文章主要介紹了springbooot使用google驗(yàn)證碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • servlet創(chuàng)建web后端程序的示例代碼

    servlet創(chuàng)建web后端程序的示例代碼

    本文主要介紹了servlet創(chuàng)建web后端程序的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 面試題:Java中如何停止線程的方法

    面試題:Java中如何停止線程的方法

    這篇文章主要介紹了Java中如何停止線程的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • java模擬微信搶紅包的實(shí)例代碼

    java模擬微信搶紅包的實(shí)例代碼

    現(xiàn)在搶紅包的功能很受歡迎,本篇文章主要介紹了java模擬微信搶紅包的實(shí)例代碼。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • springcloud?如何解決微服務(wù)之間token傳遞問題

    springcloud?如何解決微服務(wù)之間token傳遞問題

    這篇文章主要介紹了springcloud?如何解決微服務(wù)之間token傳遞問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java對(duì)double數(shù)組排序示例分享

    java對(duì)double數(shù)組排序示例分享

    這篇文章主要介紹了java對(duì)double數(shù)組排序示例,代碼簡(jiǎn)單,下面我們直接上代碼,需要的朋友可以參考下
    2014-03-03

最新評(píng)論

临猗县| 涿鹿县| 万全县| 淮安市| 澄城县| 肇东市| 威宁| 丰镇市| 邵武市| 门源| 丰镇市| 乃东县| 中阳县| 宿松县| 宣城市| 分宜县| 库尔勒市| 灵石县| 汤原县| 渭南市| 玛纳斯县| 江西省| 汨罗市| 吴桥县| 清水县| 睢宁县| 缙云县| 哈巴河县| 勃利县| 明溪县| 库伦旗| 易门县| 贵州省| 巴里| SHOW| 安康市| 确山县| 垫江县| 台北市| 贡山| 碌曲县|