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

修改JAR文件并重新打包的兩種方式

 更新時(shí)間:2026年04月20日 09:16:05   作者:蒙眼過河  
本文介紹了兩種修改并重新打包JAR文件的方法:Java命令方式和Ant腳本方式,特別強(qiáng)調(diào)了對(duì)于SpringBoot可執(zhí)行JAR包,重新打包時(shí)嚴(yán)禁使用壓縮(必須使用存儲(chǔ)模式),否則會(huì)導(dǎo)致啟動(dòng)失敗,文中還提供了詳細(xì)的核心避坑和最佳實(shí)踐,確保修改后的JAR包能正常運(yùn)行

本文介紹兩種修改 JAR 包內(nèi)文件(如配置文件或 Class 文件)后重新打包的方式:Java 命令方式Ant 腳本方式。

核心警告
對(duì)于 Spring Boot 的可執(zhí)行 JAR 包,重新打包時(shí)嚴(yán)禁使用壓縮(必須使用存儲(chǔ)模式),否則會(huì)導(dǎo)致 ClassNotFoundException 或啟動(dòng)失敗。

一、Java 命令方式 (通用/快速)

適用于臨時(shí)修改或沒有構(gòu)建工具的環(huán)境。

1. 解壓 JAR 文件

# -x: 解壓, -f: 指定文件, -v: 顯示過程(可選)
jar -xf your-file.jar

2. 修改文件

在解壓后的目錄中,按需編輯文件(例如修改 BOOT-INF/classes/application.yml 或替換 .class 文件)。

3. 重新打包 (關(guān)鍵步驟)

# 注意:必須包含 -0 參數(shù)(存儲(chǔ)模式,不壓縮)
jar -cvfm0 new-package.jar META-INF/MANIFEST.MF ./

參數(shù)詳解:

  • -c: 創(chuàng)建新的歸檔文件。
  • -v: 生成詳細(xì)輸出。
  • -f: 指定歸檔文件名。
  • -m: 包含清單文件 META-INF/MANIFEST.MF(保留 Main-Class 等配置)。
  • -0: 存儲(chǔ)模式(不壓縮)。這對(duì)于 Spring Boot 的嵌套 JAR 結(jié)構(gòu)至關(guān)重要。

二、使用 Ant 腳本方式 (自動(dòng)化/批處理)

適用于需要頻繁修改或集成到舊版構(gòu)建流程中的場(chǎng)景。

1.build.xml配置示例

<?xml version="1.0" encoding="UTF-8"?>
<project default="package" name="JarPatcher">
    <description>
        Spring Boot JAR 包熱修復(fù)/修改工具
    </description>
    <!-- 1. 屬性定義 -->
    <property name="class.dir"      location="./unpacked_classes" 
              description="解壓后的臨時(shí)目錄"/>
    <property name="newjar.name"    location="fixed-app.jar" 
              description="生成的新 JAR 名稱"/>
    <property name="sourcejar.name" location="original-app.jar" 
              description="原始 JAR 路徑"/>
    <!-- 2. 初始化:清理并創(chuàng)建目錄 -->
    <target name="init">
        <delete dir="${class.dir}" />
        <mkdir  dir="${class.dir}" />
    </target>
    <!-- 3. 解壓:將原始 JAR 解壓 -->
    <target name="unjar" depends="init">
        <unjar dest="${class.dir}" src="${sourcejar.name}">
        </unjar>
        <echo message="JAR 解壓完成,請(qǐng)?jiān)诖瞬襟E后修改 ${class.dir} 中的文件。"/>
    </target>
    <!-- 4. 打包:重新打包 (注意 compress="false") -->
    <target name="package" depends="unjar">
        <jar destfile="${newjar.name}"
             basedir="${class.dir}"
             compress="false" 
             manifest="${class.dir}/META-INF/MANIFEST.MF">
        </jar>
        <echo message="新 JAR 生成成功: ${newjar.name}"/>
    </target>
</project>

2. 執(zhí)行流程

# 第一步:解壓 (依賴 init 和 unjar)
ant unjar
# [手動(dòng)操作] 此時(shí)進(jìn)入 unpacked_classes 目錄修改文件
# 第二步:重新打包
ant package

核心避坑與最佳實(shí)踐

為了確保你的 JAR 包修改后能正常運(yùn)行,請(qǐng)務(wù)必關(guān)注以下幾點(diǎn):

關(guān)注點(diǎn)說明
壓縮級(jí)別Spring Boot 的 BOOT-INF/lib 下的依賴包必須保持 STORED(不壓縮)狀態(tài),否則類加載器無法正確讀取。
目錄結(jié)構(gòu)嚴(yán)禁改變 META-INF、BOOT-INForg 目錄的層級(jí)關(guān)系。
數(shù)字簽名如果原 JAR 包有數(shù)字簽名(META-INF/*.SF, *.RSA),修改內(nèi)容后會(huì)導(dǎo)致簽名失效。生產(chǎn)環(huán)境需重新簽名,測(cè)試環(huán)境可刪除簽名文件。
清單文件確保 MANIFEST.MF 中的 Main-Class 指向正確(Spring Boot 通常是 org.springframework.boot.loader.JarLauncher)。

驗(yàn)證命令:
打包完成后,建議先檢查內(nèi)容結(jié)構(gòu):

jar -tf new-package.jar | head -n 20

到此這篇關(guān)于修改JAR文件并重新打包的兩種方式的文章就介紹到這了,更多相關(guān)修改JAR文件并重新打包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringMVC中日期格式的轉(zhuǎn)換

    SpringMVC中日期格式的轉(zhuǎn)換

    本文主要介紹了SpringMVC中日期格式轉(zhuǎn)換的相關(guān)知識(shí):用來解決日期提交轉(zhuǎn)換異常的問題。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • java中文分詞之正向最大匹配法實(shí)例代碼

    java中文分詞之正向最大匹配法實(shí)例代碼

    中文分詞應(yīng)用很廣泛,網(wǎng)上也有很多開源項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于java中文分詞之正向最大匹配法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • win10 64位 jdk1.8的方法教程詳解

    win10 64位 jdk1.8的方法教程詳解

    這篇文章主要介紹了win10 64位 jdk1.8的方法教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • java中FileOutputStream中文亂碼問題解決辦法

    java中FileOutputStream中文亂碼問題解決辦法

    這篇文章主要介紹了java中FileOutputStream中文亂碼問題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Spring?Cloud?Alibaba實(shí)現(xiàn)服務(wù)的無損下線功能(案例講解)

    Spring?Cloud?Alibaba實(shí)現(xiàn)服務(wù)的無損下線功能(案例講解)

    這篇文章主要介紹了Spring?Cloud?Alibaba實(shí)現(xiàn)服務(wù)的無損下線功能?,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 初探Java內(nèi)部類的使用

    初探Java內(nèi)部類的使用

    Java內(nèi)部類一般可以分為以下三種:成員內(nèi)部類、靜態(tài)內(nèi)部類和匿名內(nèi)部類。這篇文章主要帶大家初探一下Java內(nèi)部類的使用,感興趣的可以了解一下
    2022-09-09
  • SpringBoot服務(wù)器端解決跨域問題

    SpringBoot服務(wù)器端解決跨域問題

    這篇文章主要介紹了SpringBoot服務(wù)器端解決跨域問題,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • IDEA 單元測(cè)試覆蓋技巧分享

    IDEA 單元測(cè)試覆蓋技巧分享

    這篇文章主要介紹了IDEA 單元測(cè)試覆蓋技巧分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Nacos服務(wù)注冊(cè)與發(fā)現(xiàn)原理解讀

    Nacos服務(wù)注冊(cè)與發(fā)現(xiàn)原理解讀

    Nacos是阿里巴巴開源的微服務(wù)組件,支持服務(wù)注冊(cè)、發(fā)現(xiàn)及配置管理,采用客戶端心跳維護(hù)、服務(wù)端推送與長(zhǎng)輪詢同步,結(jié)合健康檢查機(jī)制,實(shí)現(xiàn)高效可靠的微服務(wù)治理
    2025-08-08
  • Spring Boot攔截器Interceptor與過濾器Filter詳細(xì)教程(示例詳解)

    Spring Boot攔截器Interceptor與過濾器Filter詳細(xì)教程(示例詳解)

    本文詳細(xì)介紹了SpringBoot中的攔截器(Interceptor)和過濾器(Filter),包括它們的定義、作用范圍、使用場(chǎng)景、實(shí)現(xiàn)步驟、執(zhí)行順序、常見問題及解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-03-03

最新評(píng)論

铁岭市| 谷城县| 梁河县| 开阳县| 章丘市| 定襄县| 枣强县| 米泉市| 永仁县| 安多县| 民丰县| 通州区| 贞丰县| 台州市| 科技| 金沙县| 石棉县| 涟水县| 满洲里市| 吕梁市| 临夏市| 彭阳县| 屏东市| 沾化县| 建始县| 含山县| 成都市| 桓仁| 永春县| 思南县| 夏河县| 赤峰市| 砀山县| 梓潼县| 崇仁县| 孝感市| 尼玛县| 子洲县| 榆树市| 福州市| 通化市|