IDEA修改jar包中class文件后重新生成jar包 - Debris丶

debris 2021-11-01 原文


IDEA修改jar包中class文件后重新生成jar包

一、背景

最新想要修改rebeyond大佬的冰蝎项目,特地去网上搜索如何修改jar包中的源码再替换回去的方法,但由于现在的一些文章写的太烂,导致走了很多弯路,因此写下这篇快速使用IDEA修改源码并替换class文件再打成jar包的文章。

二、具体步骤

1、下载冰蝎项目jar包,放入D盘目录下:

2、使用IDEA新建一个maven项目,这里就叫test_123:

3、打开File -> Project Structure:

在Libraries中加入刚刚下载的jar包:

加载完如下,点击Apply和OK即可。

此时整个项目结构如下:

4、假设现在想要修改net.rebeyond.behinder.core包中的ShellService类,就需要在我们的项目中创建一个同名的包以及同名的ShellService类,然后将jar中的ShellService类的内容复制过去:

5、看到复制过去之后,代码中有报错,此时就需要我们自己修改这些报错。

这里我遇到的大致有两类报错:

  • 一类是java版本的报错,整个项目使用的jdk版本是1.5,但某些函数只能在jdk1.8中使用

    此时就需要修改项目的编码,这里主要也是在File->Project Structure -> Modules中调整Language Level为jdk 8:

    然后在Project一项,也修改成jdk8:

    在File -> Settings中找到Java Compiler项,修改编译环境为1.8:

  • 另一类问题是通过class文件反编译得到的java源码中存在变量重复声明的问题:

    这里只需要删除重复多余的声明即可。

6.修改完错误之后,即可编译项目:

7.编译完成之后,在target目录会生成ShellService.class文件:

8、解压jar包,然后用刚刚生成的ShellService.class替换掉jar包解压之后文件夹内net/rebeyond/behinder/core目录下的ShellService.class:

9、回到D:\Test\Behinder_v3.0_Beta_6_win (1)目录下,进入cmd窗口,使用下面的命令重新生成jar包:

jar cfm test.jar Behinder_v3.0_Beta6_win\META-INF\MANIFEST.MF -C Behinder_v3.0_Beta6_win\ .

执行完会在当前目录生成一个test.jar的文件,该jar包即为修改源码并替换class文件之后的jar包。

三、参考

1、https://www.javatt.com/p/83085

发表于
2021-03-10 09:39 
Debris丶 
阅读(3147
评论(1
编辑 
收藏 
举报

 

版权声明:本文为debris原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/debris/p/14509671.html

IDEA修改jar包中class文件后重新生成jar包 - Debris丶的更多相关文章

  1. 【回归分析】[6]–残差分析 – WMN7Q

    【回归分析】[6]–残差分析 【回归分析】[6]–残差分析   在这一节,我们讨论一下 […]...

  2. 大数据架构与技术选型 – 努力的孔子

    大数据架构与技术选型 大数据基本架构 了解架构能更清晰地认识每个组件,数据处理流程,用作流程设计和技术选型   […]...

  3. 【机器学习】主成分分析法 PCA (I) – KID_XiaoYuan

    【机器学习】主成分分析法 PCA (I) 主成分分析算法是最常见的降维算法,在PCA中,我们要做的是找到一个方 […]...

  4. C++编程对缓冲区的理解 – Pro.Charm

    C++编程对缓冲区的理解 什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定 […]...

  5. RGB颜色表 – 694579350

    RGB颜色表 RGB(255,23,140)是光的三原色,也即红绿蓝Red、Green、Blue,它们的最大值 […]...

  6. 小程序——如何引入外部js – 关&尔

    小程序——如何引入外部js 当写小程序需要引入一些额外的js文件时,可以这样: 一、先把外部js用一个函数封闭 […]...

  7. 疫情下,我选择了离职… ; 工作三年老程序员,谈谈职业规划 – 逆袭之路666

    疫情下,我选择了离职… ; 工作三年老程序员,谈谈职业规划   疫情之下,确实行情不好,相比去年招 […]...

  8. Android composite adb interface – 勤修

    Android composite adb interface 我的平板连上电脑后,在eclipse的DDMS […]...

随机推荐

  1. linux软件管理之yum管理操作软件包

    linux软件管理之yum管理操作软件包 什么是rpm 1.1`RPM` 全称 `RedHat Package […]...

  2. php支付宝接口 的使用 – 小白兔晒黑了

    php支付宝接口 的使用 下载地址(java/php都有) https://doc.open.alipay.c […]...

  3. Oracle创建数据库

     ...

  4. WebStorm license server

    1.据证实此链接已失效 http://idea.iteblog.com/key.php 2.  2017.2. […]...

  5. 怎么使用cmd进入到文件夹目录 – 高达

    怎么使用cmd进入到文件夹目录   1.本文以进入到C盘下windows文件夹里面的system32文件夹里的 […]...

  6. npm常用命令及其node相关工具汇总

    npm ,nvm ,npx,nrm,发布自己的npm工具包及npm相关命令 它是一个事件驱动异步I/O单进程的 […]...

  7. 数据库操作之DBUtils

    概述 DBUtils是Java编程中的数据库操作实用工具,小巧简单实用。 DBUtils封装了对JDBC的操作 […]...

  8. MyEclipse使用总结——MyEclipse文件查找技巧

    一、查找文件   使用快捷键【ctrl+shift+R】弹出弹出文件查找框,如下图所示:    二、查找包含某 […]...

展开目录

目录导航