使用jd-gui反编译修改jar包里的.class并重新生成新jar_jd-gui修改class文件里的代码-程序员宅基地

技术标签: jvm  java  jar  

  • 准备工具:jd-gui.exe反编译工具
  • 下面以我本地修改graphql-java-15.0.jar包为例:
  1. 准备jar包,新建origin文件夹,将jar包通过win.rar或当前文件夹cmd运行解压命令jar -xvf graphql-java-15.0.jar解压到origin文件夹内
    在这里插入图片描述
    在这里插入图片描述
  2. 使用 jd-gui工具 打开graphql-java-15.0.jar
    在这里插入图片描述
    假如我要修改Assert.class,不要在 jd-gui工具里面修改,先ctrl+s保存要修改的文件到某目录
    在这里插入图片描述
    我保存在跟graphql-java-15.0.jar同目录下
    在这里插入图片描述
  3. 使用文本编辑工具(我用nodepad),修改java文件里的某段逻辑,然后通过命令重新编译该java文件为class文件
javac -cp graphql-java-15.0.jar Assert.java   //  -cp graphql-java-15.0.jar  表示Assert.java编译时依赖graphql-java-15.0.jar

在这里插入图片描述
4. 用编译好的Assert.class替换掉原先解药的origin目录里的,使用命令将origin目录里的文件打包为新的jar包:
先进入到origin,执行打包命令:

jar -cvfm0 graphql-java-15.0-modify.jar META-INF/MANIFEST.MF ./

至此便生成新的jar包
在这里插入图片描述
5. 引用修改后的jar包
将jar包放在项目lib,修改pom文件
在这里插入图片描述

注意!!!
原本通过pom引入的jar包,如果有外部包,要手动引入,我们修改后引入的graphql-java-15.0-modify.jar不会自动导入这些外部依赖包
在这里插入图片描述
在pom文件引入:

<!--graphql-java-15.0.jar依赖的其他jar begin-->
		<dependency>
			<groupId>org.antlr</groupId>
			<artifactId>antlr4-runtime</artifactId>
			<version>4.7.2</version>
		</dependency>
		<dependency>
			<groupId>com.graphql-java</groupId>
			<artifactId>java-dataloader</artifactId>
			<version>2.2.3</version>
		</dependency>
		<dependency>
			<groupId>org.reactivestreams</groupId>
			<artifactId>reactive-streams</artifactId>
			<version>1.0.3</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.29</version>
		</dependency>
		<!--graphql-java-15.0.jar依赖的其他jar end-->
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Z_Plin/article/details/129200266

智能推荐

CDN架构原理、流量模型、网络调优_cdn 95带宽算法优化-程序员宅基地

文章浏览阅读1k次。详细的知识参考 :https://www.cnblogs.com/zousong/p/10925445.htmlCDN全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络基本思路:尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离.._cdn 95带宽算法优化

nodejs安装之后,npm命令拒绝访问_npm -v 拒绝访问-程序员宅基地

文章浏览阅读5.7k次。@[T标题OC](这里写自定义目录标题)欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博..._npm -v 拒绝访问

单片机通信接口:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB_单片机通讯接口-程序员宅基地

文章浏览阅读1.5w次,点赞40次,收藏325次。参考资料:这些单片机接口,一定要熟悉:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡秒懂所有USB接口类型,USB接口大全1. UARTUART(通用异步收发器)指的是一种物理接口形式(硬件)。UART是异步,全双工串口总线。它比同步串口复杂很多。有两根线,一根TXD用于发送,一根RXD用于接收。UART的串行数据传输不需要使用时钟信号来同步传输,而是依赖于发送设备和接收设备之间预定义的配置。对于发送设备和接收设备来说,两者的串行通信配置应该设_单片机通讯接口

11个经典运放电路_运算放大器11种经典电路-程序员宅基地

文章浏览阅读10w+次,点赞205次,收藏1.3k次。运算放大器组成的电路五花八门,令人眼花瞭乱。工程师在分析它的工作原理时常抓不住核心,令人头大。为此小编特地搜罗天下运放电路之应用,来个“庖丁解牛”,希望各位看完后有所收获。遍观所有模拟电子技术的书籍和课程,在介绍运算放大器电路的时候,无非是先给电路来个定性,比如这是一个同向放大器,然后去推导它的输出与输入的关系,然后得出Vo=(1+Rf)Vi,那是一个反向放大器,然后得出Vo=-Rf*V..._运算放大器11种经典电路

s905各种型号的区别_预行式增压缸和直压增压缸有什么区别?-程序员宅基地

文章浏览阅读359次。玖容增压缸的型号有很多,适用在不同的工作环境中,不同的型号是根据不同的使用环境来设计的。我们从工作原理上来划分,增压缸一般分为预行式增压缸和直压增压缸,它们由于使用的环境不同,使用的场合也有所不同,今天就来和大家来分享一下“预行式增压缸和直压增压缸有什么区别?”。首先我们来说说预行式增压缸和直压增压缸的区别之处:预行式增压缸比直压增压缸多了一段预走行程。将增压器直接设计在气缸的后端,接上气压管路,..._玖容 新浪博客

运维面试题-程序员宅基地

文章浏览阅读8.5k次,点赞10次,收藏98次。NETWORK1 请描述 TCP/IP 协议中主机与主机之间通信的三要素参考答案IP 地址(IP address)子网掩码(subnet mask)IP 路由(IP router)2 请描述 IP 地址的分类及每一类的范围参考答案A 类 1-26B 类 128-191C 类 192-223D 类 224-239 组播(多播)E 类 240-254 科研3 请描述 A、B、..._运维面试题

随便推点

绘制男朋友聊天记录的词云_pythin男友聊天词云-程序员宅基地

文章浏览阅读183次。1 数据获取在消息管理中导出全部数据,得到全部消息记录.txt。2 文本处理只筛选和男朋友的聊天记录,从'消息对象:AI男朋友\n'到'2021-05-06 14:42:52 AI男朋友\n'结束,将其保存在AI.txt中,具体如下:f = open('全部消息记录.txt','r',encoding='utf-8')lines = f.readlines()j = 0for line in lines: if line == '消息对象:AI男朋友\n': fla_pythin男友聊天词云

Linux终端(Terminal)与控制台(Console)的区别_linux c terminal-程序员宅基地

文章浏览阅读976次。Linux终端(Terminal)与控制台(Console)的区别_linux c terminal

制作 linux .deb 安装包_构建deb软件升级包-程序员宅基地

文章浏览阅读371次。ubuntu 制作安装包_构建deb软件升级包

(转载)循序渐进学习嵌入式Linux开发技术-程序员宅基地

文章浏览阅读39次。再次申明,本文是转载,为以后查找留个记号。嵌入式时代已经来临,你还在等什么? ---循序渐进学习嵌入式开发技术最近经常有用人单位给我打来电话,问我这有没有嵌入式Linux方面的开发人员,他们说他们单位急需要懂得在嵌入式linux环境下的软件开发人员,我回答说,现在每年毕业的大学生那么多,还招不到合适的软件开发人员吗?他跟我说,毕业大学生虽然多,但大部分都能力不够,不能达到他们的工作的要...

如何成功在M1 macbook上运行Ubuntu20.04_ubuntu20.04 for m1-程序员宅基地

文章浏览阅读8.3k次,点赞5次,收藏19次。如何在搭载M1芯片的苹果电脑上跑UbuntuParallels官方发布了针对搭载apple silcon M1芯片的Mac的测试版虚拟机,笔者已经成功运行,具体步骤总结如下:第一步 安装测试版 Parallels Desktop需要去官网注册账户然后下载专门的测试软件参考地址:官网地址步骤如下:Meet the new Parallels Desktop (官网页面To run a virtual machine on a new Mac computer with the Apple M1 _ubuntu20.04 for m1

STM32单片机智能手环心率计步器体温-程序员宅基地

文章浏览阅读654次,点赞9次,收藏15次。STM32F103C8T6单片机核心板电路、ADXL345传感器电路、心率传感器电路、温度传感器和lcd1602电路组成。通过重力加速度传感器ADXL345检测人的状态,计算出走路步数、走路距离和平均速度。过心率传感器实时检测心率,通过温度传感器检测温度。通过LCD1602实时显示步数、距离和平均速度、心率以及温度值。主要学习ADXL345,心率传感器等等。