Jar包反编译后修改源码再编译
Jar包反编译后修改源码再编译
文章目录
- Jar包反编译后修改源码再编译
- 1. 场景
- 2. 详细步骤
- 2.1 查看源码
- 2.2 生成源文件
- 2.3 构建项目
- 2.4 编译成jar包
- 3. 参考链接
1. 场景
需要对当前的jar包功能进行修改,但是没有源码,两种方式:
- 通过反编译软件如JD-GUI或其他Java开发常用的IDE如IDEA查看源代码,创建新工程,按照文件结构逐个将文件源码复制粘贴到工程中,再根据个人需求进行修改、编译等。
- 通过反编译软件JD-GUI直接保存成源码格式的工程文件,再通过IDEA打开工程,进行必要的配置后,再根据需求进行修改编译。
很明显第一种方式比较费时,选用第二种方式。
2. 详细步骤
2.1 查看源码
如果仅仅是查看源代码的话,有两种方式:
方式一:
直接通过jd-gui
打开jar
文件即可。
方式二:
通过IDEA
的External Libraries
查看。在IDEA中通过Project Structure
将需要查看的jar包添加到Libraries,之后就可以查看了。
第二种方式虽然稍微麻烦一点,但如果只是查看源码的话,个人更倾向第二种。
2.2 生成源文件
借助jd-gui
可以直接生成**.java**源文件。通过菜单File
-> Save All Sources
就可以生成源文件压缩包。
注:查看生成的源码文件中有一些多余的注释,如行号及一些元数据信息,可以通过修改jd-gui的偏好设置重新生成。
2.3 构建项目
通过IDEA直接打开源文件;
创建src目录,将源文件方法到
src
下,根据报错信息,修改工程的外部引用;
2.4 编译成jar包
两种类型可以选择:Empty可以不设置主类,适用于编译没有主类的jar包;
3. 参考链接
- 将JAR包反编译,修改后重新打包
- IDEA反编译jar包源码
- Idea打包Jar文件
Jar包反编译后修改源码再编译相关推荐
- 编译安装gcc-4.8.2(编译出错后修改源码 编译成功)
记录 下载 wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz 解压 下载依赖 tar zxf gcc-4.8.5.tar.gz cd ...
- android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试
一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...
- android 源码编译 模拟器emulator启动,Android 模拟器运行编译后的源码
下载Android源码以及如何编译,这里就不多介绍了,照着www.android.com给的步骤进行,主要介绍一下使用make命令编译好了源码之后,如何使用模拟器来运行生成的镜像之类的文件. 方式应该 ...
- hadoop临时文件 jar包_hadoop之Mapper/reducer源码分析之二
若当前JobClient (0.22 hadoop) 运行在YARN.则job提交任务运行在YARNRunner Hadoop Yarn 框架原理及运作机制 主要步骤 作业提交 作业初始化 资源申请与 ...
- 最小的linux内核代码,带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统...
要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统.这样你才能在修改linux内核代码之后,完成验证的过程. 本文教你完成下列过程: 1.下载linux并编译linux内核源码 ...
- 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...
- [Android编译(二)] 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机
1 前言 经过一周的奋战,终于从谷歌官网上下载最新的Android 6.0.1_r62源码,编译成功,并成功的刷入nexus6p,接着root完毕,现写下这篇博客记录一下实践过程. 2 简介 自己下载 ...
- 6S大气传输模型修改源码添加、自定义CASI传感器光谱响应
6S大气传输模型编译以及修改源码添加.自定义CASI传感器光谱响应 在利用6S模型进行CASI影像数据的大气纠正时,发现6S模型中没有对应的光谱响应函数,又不想自己整个输进去,就查资料对源码进行了修改 ...
- Qt源码重新编译QtMultimedia模块解决XP播放视频问题
当用qml的MediaPlayer在XP系统下播放视频时,会报错:QtMultimedia : defaultServiceProvider::requestService(): no service ...
最新文章
- 文献学习(part19)--Graph Connectivity In Sparse Subspace Clustering
- 图像多分类——卷积神经网络
- oracle还原脚本,oracle自动恢复脚本
- Android功耗(16)---自启动管理
- Hive性能优化(全面)
- 考研大纲词汇mysql下载_通过R语言统计考研英语(二)单词出现频率
- [leetcode] 872. 叶子相似的树(周赛)
- (7)numpy.delete删除np数组的某一行或某一列
- 【转】HP laserjet p2055dn的自动双面打印功能
- 优质短信api接口具备的特点
- uni-app 获取手机类型
- Stanford Algorithms: Design and Analysis, Part 1 [Final Exam]
- Linux中time()函数用法
- python的类作用_从封装看类的作用
- VSS 2005 安装,配置简明手册 及VSS2005下载地址
- 自然语言处理学习笔记4:空间向量模型
- 【 rbx1翻译 第七章、控制移动基座】第九节、使用里程计走正方形
- lombok @data 忽略属性_Lombok使用指南
- (59.2)【Windows提权】权限等级、PSTools提权、at命令提权、sc命令提权
- WinAPI键盘输入消息
热门文章
- 最大熵模型(Maximum Entropy Model)文献阅读指南
- 【Accelerated C++】重点回顾(续)
- Coursera公开课笔记: 斯坦福大学机器学习第一课“引言(Introduction)”
- 鸟哥的Linux私房菜(基础篇)-第四章、安装 CentOS 5.x 与多重开机小技巧(三.1. 本练习机的规划--尤其是分割参数)
- 【OpenCV3】视频读写——cv::VideoCapture和cv::VideoWriter详解
- Docker技术实践——中级篇
- 过滤某一个时间段的日志----sed
- Android深度探索第五章
- Servlet--HttpServletRequest一些不常用的方法
- Linux内核分析--操作系统是如何工作的