使用jd-gui反编译修改jar包里的.class并重新生成新jar问题

 更新时间:2024年05月20日 12:04:54   作者:wetools.online  
这篇文章主要介绍了使用jd-gui反编译修改jar包里的.class并重新生成新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-->

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot中集成Swagger2及简单实用

    SpringBoot中集成Swagger2及简单实用

    使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等,这篇文章主要介绍了SpringBoot中集成Swagger2,需要的朋友可以参考下
    2023-06-06
  • spring Retryable注解实现重试详解

    spring Retryable注解实现重试详解

    这篇文章主要介绍了spring Retryable注解实现重试详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 简单了解Mybatis如何实现SQL防注入

    简单了解Mybatis如何实现SQL防注入

    这篇文章主要介绍了简单了解Mybatis如何实现SQL防注入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Activiti7通过代码动态生成工作流实现详解

    Activiti7通过代码动态生成工作流实现详解

    这篇文章主要为大家介绍了Activiti7通过代码动态生成工作流实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • idea新建maven项目没有src目录的操作方法

    idea新建maven项目没有src目录的操作方法

    这篇文章主要介绍了idea新建maven项目没有src目录的两种操作方法,需要的朋友可以参考下
    2018-03-03
  • 使用MyBatis从hive中读取数据

    使用MyBatis从hive中读取数据

    Hive是一个基于Hadoop的数据仓库工具,它可以方便地对大规模数据进行查询和分析,本文主要介绍了使用MyBatis从hive中读取数据,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • MyBatis Generator使用小结

    MyBatis Generator使用小结

    本文主要介绍了MyBatis Generator使用小结,它能够根据数据库表,自动生成java实体类、dao层接口及mapper.xml文件,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • springboot3.X 无法解析parameter参数问题分析

    springboot3.X 无法解析parameter参数问题分析

    本文介绍了Spring Boot 3.2.1版本中调用接口时出现的参数解析问题,该错误是由Spring新版本加强的错误校验和报错提示导致的,在Spring 6.1之后,官方要求URL中的传参必须使用`@PathVariable`声明用于接收的变量,而不能省略`@RequestParam`注解,感兴趣的朋友一起看看吧
    2025-03-03
  • 解决使用@Value(${×××))从properties文件取值的坑

    解决使用@Value(${×××))从properties文件取值的坑

    这篇文章主要介绍了解决使用@Value(${×××))从properties文件取值的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java中的static和final关键字的使用详解

    Java中的static和final关键字的使用详解

    这篇文章主要介绍了Java中的static和final关键字的使用详解,  当方法名前有static,即为static方法,可以方便我们无需创建对象也可以调用此方法,静态方法比较拉,只可以访问 静态的 属性/变量/方法,无法访问非静态的这些属性/变量/方法,需要的朋友可以参考下
    2024-01-01

最新评论