Jar包反编译后修改源码再编译

文章目录

  • Jar包反编译后修改源码再编译
    • 1. 场景
    • 2. 详细步骤
      • 2.1 查看源码
      • 2.2 生成源文件
      • 2.3 构建项目
      • 2.4 编译成jar包
    • 3. 参考链接

1. 场景

需要对当前的jar包功能进行修改,但是没有源码,两种方式:

    1. 通过反编译软件如JD-GUI或其他Java开发常用的IDE如IDEA查看源代码,创建新工程,按照文件结构逐个将文件源码复制粘贴到工程中,再根据个人需求进行修改、编译等。
    1. 通过反编译软件JD-GUI直接保存成源码格式的工程文件,再通过IDEA打开工程,进行必要的配置后,再根据需求进行修改编译。

很明显第一种方式比较费时,选用第二种方式。

2. 详细步骤

2.1 查看源码

如果仅仅是查看源代码的话,有两种方式:

方式一:

直接通过jd-gui打开jar文件即可。

方式二:

通过IDEAExternal Libraries查看。在IDEA中通过Project Structure将需要查看的jar包添加到Libraries,之后就可以查看了。

第二种方式虽然稍微麻烦一点,但如果只是查看源码的话,个人更倾向第二种。

2.2 生成源文件

借助jd-gui可以直接生成**.java**源文件。通过菜单File -> Save All Sources就可以生成源文件压缩包。

注:查看生成的源码文件中有一些多余的注释,如行号及一些元数据信息,可以通过修改jd-gui的偏好设置重新生成。

2.3 构建项目

  1. 通过IDEA直接打开源文件;

  2. 创建src目录,将源文件方法到src下,根据报错信息,修改工程的外部引用;

2.4 编译成jar包

两种类型可以选择:Empty可以不设置主类,适用于编译没有主类的jar包;

3. 参考链接

  • 将JAR包反编译,修改后重新打包
  • IDEA反编译jar包源码
  • Idea打包Jar文件

Jar包反编译后修改源码再编译相关推荐

  1. 编译安装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 ...

  2. android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试

    一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...

  3. android 源码编译 模拟器emulator启动,Android 模拟器运行编译后的源码

    下载Android源码以及如何编译,这里就不多介绍了,照着www.android.com给的步骤进行,主要介绍一下使用make命令编译好了源码之后,如何使用模拟器来运行生成的镜像之类的文件. 方式应该 ...

  4. hadoop临时文件 jar包_hadoop之Mapper/reducer源码分析之二

    若当前JobClient (0.22 hadoop) 运行在YARN.则job提交任务运行在YARNRunner Hadoop Yarn 框架原理及运作机制 主要步骤 作业提交 作业初始化 资源申请与 ...

  5. 最小的linux内核代码,带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统...

    要学习linux内核,先要能够编译内核,还需要了解内核如何启动根文件系统.这样你才能在修改linux内核代码之后,完成验证的过程. 本文教你完成下列过程: 1.下载linux并编译linux内核源码 ...

  6. 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...

  7. [Android编译(二)] 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    1 前言 经过一周的奋战,终于从谷歌官网上下载最新的Android 6.0.1_r62源码,编译成功,并成功的刷入nexus6p,接着root完毕,现写下这篇博客记录一下实践过程. 2 简介 自己下载 ...

  8. 6S大气传输模型修改源码添加、自定义CASI传感器光谱响应

    6S大气传输模型编译以及修改源码添加.自定义CASI传感器光谱响应 在利用6S模型进行CASI影像数据的大气纠正时,发现6S模型中没有对应的光谱响应函数,又不想自己整个输进去,就查资料对源码进行了修改 ...

  9. Qt源码重新编译QtMultimedia模块解决XP播放视频问题

    当用qml的MediaPlayer在XP系统下播放视频时,会报错:QtMultimedia : defaultServiceProvider::requestService(): no service ...

最新文章

  1. 文献学习(part19)--Graph Connectivity In Sparse Subspace Clustering
  2. 图像多分类——卷积神经网络
  3. oracle还原脚本,oracle自动恢复脚本
  4. Android功耗(16)---自启动管理
  5. Hive性能优化(全面)
  6. 考研大纲词汇mysql下载_通过R语言统计考研英语(二)单词出现频率
  7. [leetcode] 872. 叶子相似的树(周赛)
  8. (7)numpy.delete删除np数组的某一行或某一列
  9. 【转】HP laserjet p2055dn的自动双面打印功能
  10. 优质短信api接口具备的特点
  11. uni-app 获取手机类型
  12. Stanford Algorithms: Design and Analysis, Part 1 [Final Exam]
  13. Linux中time()函数用法
  14. python的类作用_从封装看类的作用
  15. VSS 2005 安装,配置简明手册 及VSS2005下载地址
  16. 自然语言处理学习笔记4:空间向量模型
  17. 【 rbx1翻译 第七章、控制移动基座】第九节、使用里程计走正方形
  18. lombok @data 忽略属性_Lombok使用指南
  19. (59.2)【Windows提权】权限等级、PSTools提权、at命令提权、sc命令提权
  20. WinAPI键盘输入消息

热门文章

  1. 最大熵模型(Maximum Entropy Model)文献阅读指南
  2. 【Accelerated C++】重点回顾(续)
  3. Coursera公开课笔记: 斯坦福大学机器学习第一课“引言(Introduction)”
  4. 鸟哥的Linux私房菜(基础篇)-第四章、安装 CentOS 5.x 与多重开机小技巧(三.1. 本练习机的规划--尤其是分割参数)
  5. 【OpenCV3】视频读写——cv::VideoCapture和cv::VideoWriter详解
  6. Docker技术实践——中级篇
  7. 过滤某一个时间段的日志----sed
  8. Android深度探索第五章
  9. Servlet--HttpServletRequest一些不常用的方法
  10. Linux内核分析--操作系统是如何工作的