IDEA JarEditor編輯jar包方式(直接新增,修改,刪除jar包內(nèi)的class文件)
之前我們需要修改jar內(nèi)文件的時(shí)候需要解壓jar包,反編譯class,新建java源文件,修改代碼,再編譯成class,替換jar包內(nèi)的class文件。
現(xiàn)在利用IDEA的修改jar插件JarEditor可以直接修改class文件,一氣呵成。
https://plugins.jetbrains.com/plugin/24397-jareditor
1. 安裝插件 JarEditor
File -> Settings -> Plugins
2. 在IDEA中添加外部JAR包
如果jar包在idea的External Libraries中不存在,外部文件可以通過(guò)File->Project Structure->Libraries添加。
3. JarEditor 使用介紹
在具體jar的目錄下右鍵,可以做如下操作:
下面做一些演示。
- 在jar內(nèi)新增文件
package org.apache.commons.lang3; public class XinliushijianTest { public static String SMILE = "HAHAHA!!!"; public XinliushijianTest() { } public static String xinliushijianTest() { return "xinliushijian"; } }
- 在jar包內(nèi)修改文件
- 讓新增、修改的文件生效
如上圖,從左到右依次點(diǎn)擊。
- 1. 切換到Jar Editor tab頁(yè)
- 2. 選擇JDK版本
- 3. 編譯修改的java內(nèi)容,并保存
- 4. 將修改的class內(nèi)容重新打包進(jìn)jar包
Save/Compile會(huì)將修改的文件保存到j(luò)ar包所在目錄的jar_edit子目錄下,Build Jar會(huì)把會(huì)jar_edit目錄的文件增量寫(xiě)入jar,最后再刪除這個(gè)目錄
- 測(cè)試新增、修改的文件是否可以使用
import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.XinliushijianTest; public class StringDemo11 { public static void main(String[] args) { String result = XinliushijianTest.xinliushijianTest(); System.out.println("result: " + result); String result1 = RandomUtils.xinliushijianTest(); System.out.println("result1: " + result1); System.out.println(XinliushijianTest.SMILE); } }
- 打印
result: xinliushijian
result1: 心流時(shí)間
HAHAHA!!!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 學(xué)習(xí)筆記(入門(mén)篇)_程序流程控制結(jié)構(gòu)和方法
程序流程控制結(jié)構(gòu)分為:順序、選擇、循環(huán)以及異常處理結(jié)構(gòu),語(yǔ)句是程序的基本組成單位,一般來(lái)說(shuō)語(yǔ)句的執(zhí)行流程是按順序來(lái)進(jìn)行的,但是當(dāng)遇到一些特殊的條件,比如循環(huán),這時(shí)候語(yǔ)句就會(huì)按照流程控制結(jié)構(gòu)來(lái)進(jìn)行了2013-01-01Java?BitMap源碼仿寫(xiě)實(shí)現(xiàn)
這篇文章主要介紹了Java?BitMap源碼仿寫(xiě)實(shí)現(xiàn),所謂bitmap,就是用每一位來(lái)存放某種狀態(tài),適用于大規(guī)模數(shù)據(jù),但數(shù)據(jù)狀態(tài)又不是很多的情況。通常是用來(lái)判斷某個(gè)數(shù)據(jù)存不存在的2022-12-12springboot查看和修改內(nèi)置tomcat版本的方法步驟
本文主要介紹了springboot查看和修改內(nèi)置tomcat版本的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07解決@JsonInclude(JsonInclude.Include.NON_NULL)不起作用問(wèn)題
這篇文章主要介紹了解決@JsonInclude(JsonInclude.Include.NON_NULL)不起作用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06Springboot錯(cuò)誤處理機(jī)制實(shí)現(xiàn)原理解析
這篇文章主要介紹了springboot錯(cuò)誤處理機(jī)制實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Java之Swagger配置掃描接口以及開(kāi)關(guān)案例講解
這篇文章主要介紹了Java之Swagger配置掃描接口以及開(kāi)關(guān)案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08list集合去除重復(fù)對(duì)象的實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇list集合去除重復(fù)對(duì)象的實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01Java項(xiàng)目實(shí)現(xiàn)定時(shí)任務(wù)的三種方法
Java開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)遇到使用定時(shí)任務(wù)的情況,比如在某個(gè)活動(dòng)結(jié)束時(shí),自動(dòng)生成獲獎(jiǎng)名單,導(dǎo)出excel等,下面這篇文章主要給大家介紹了關(guān)于Java項(xiàng)目實(shí)現(xiàn)定時(shí)任務(wù)的三種方法,需要的朋友可以參考下2022-06-06