JD-GUI反编译jar包为Java源代码
程序员难免要借鉴其他java工程的代码。可有时只能拿到.calss文件,jar包或者war包,这个时候要求程序员能熟练的将这些类型文件反编译为Java代码并形成可编译运行的项目。本文介绍的反编译工具是JD-GUI。反编译的jar包是一个springboot项目的jar包。
反编译工具使用
下载JD-GUI后解压,无需安装,双击打开exe文件。
open file选择要反编译的jar包,
打开,左侧classes->com目录下就是java源代码文件
点击想查看的文件,可以看到源代码,点击有下划线的变量符号,会自动跳转到定义处,也可以搜索变量名,但是搜索时会比较慢,需要多等一会。
获得源代码
这样只能查看代码,要编译,修改,运行代码,就要把所有代码提取出,形成工程项目。点击File->save all source
源代码会保存为压缩包
压缩包解压是三个文件夹
java代码都在BOOT-INF/calsses/com里
将classes目录里的所有东西一起拷贝到建立好的空的springboot项目中编译运行,目录层次要拷贝正确。
获得项目配置文件
项目配置文件application.properties和pom.xm里的内容复制反编译解压目录同名文件里的内容粘贴进来。
获得项目依赖的jar包
现在项目代码有了,配置文件也有,但是一般还不能成功运行项目。因为反编译的pom不是特别准确,可能很多项目需要的包,pom里没有import。或者原项目用的一些jar包本来就是手工导入项目,不是pom统一管理的。
最好的办法就是从被反编译的jar包里提取所有需要import的jar包。
将test01.jar后缀名改成zip test01.zip,解压到当前文件夹。
解压后的BOOT-INF\lib里有本项目需要的全部jar包,将所有jar包通过add external jar的方式加到项目中。
运行项目
到这里距离成功运行项目很近了,因为反编译的代码也不是特别精确,有些代码需要人工分析修改,或者修改不成功只能注释掉,才能通过编译。运行时有些包可能报错,主要是pom引入的包和手工导入的包冲突,或者有些包版本不对,也需要逐一解决。当然,有些反编译项目直接正确运行不报错误,这样当然最好了。
JD-GUI反编译jar包为Java源代码的更多相关文章
- jad 反编译 jar包
1.利用winrar解压缩jar包 或者CMD>jar -xvf test.jar -C classes 2.下载jad,利用jad反编译jar包 CMD>[jad_home]/jad.e ...
- IDEA—使用插件反编译jar包
关注微信公众号:CodingTechWork,一起学习进步. 引言 在产品上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况, ...
- 如何修改可运行Jar包,如何反编译Jar包
将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All ...
- 反编译Jar包
Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有. 对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看 ...
- idea反编译jar包,jclasslib Bytecode Viewer
下载 jclasslib Bytecode Viewer https://plugins.jetbrains.com/plugin/9248-jclasslib-bytecode-viewer/ver ...
- IDEA反编译jar包源码
1.maven 项目查看jar源码 如何在idea中查看jar包源码 文章目录 准备jar包 idea打开文件夹 最后一步 准备jar包 例如,我准备看resin的jar,在桌面准备了一份 ide ...
- JAVA 如何反编译JAR文件
1 直接的jar文件可以用winrar解压,然后得到class文件,但是这里得到的class文件也是编译过的二进制文件,用传统的文本编辑器无法打开. 2 用XJad这个软件可以反编译Jar文件,直接找 ...
- Java反编译利器-Jad, Jode, Java Decompiler等及其IDE插件
转自:http://blog.csdn.net/superbeck/article/details/5189231 对于长年使用Java的程序员,大部分应该都会或多或少的使用到反编译软件.毕竟,不可能 ...
- Eclipse Oxygen(4.7.0)安装插件Eclipse Class Decompiler反编译JAR文件
引用自官方内容 Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行 ...
随机推荐
- Three.js学习1_快速入门
快速上手, 搭建第一个3D场景 最重要的一步, 先下载three.js, 引入网页中 <script src="./three.js"></script> ...
- js中使用const声明变量时需要注意
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址(初始化的内容)不得改动.对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 简单 ...
- 用python爬虫写一个属于自己的彩虹屁生成器!
效果图如下:
- PyCharm 中文教程 01:运行 Python 的四种方式
<PyCharm 中文指南>在线阅读: http://pycharm.iswbm.com/ Github 项目主页: https://github.com/iswbm/pych... 1. ...
- JMeter尝鲜
最近打算对一个线上HTTP接口做下压力测试,选择JMeter做为压测工具. 关于JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.可以用于对静态的和动态的资源 ...
- Kubernetes K8S之资源控制器Daemonset详解
Kubernetes的资源控制器Daemonset详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C/ ...
- unity坑-编译错误
问题: 项目里面有一个 StreamReader来读取一个文件,使用OpenText() 方法. 但是UNITY却提示 StreamReader类不包含OpenText()方法,并且也没有找到扩展方法 ...
- 深入了解Netty【五】线程模型
引言 不同的线程模型对程序的性能有很大的影响,Netty是建立在Reactor模型的基础上,要搞清Netty的线程模型,需要了解一目前常见线程模型的一些概念. 具体是进程还是线程,是和平台或者编程语言 ...
- 会话技术之 Session
会话技术之 Session 不多废话,先来一个 HelloWorld. Session 有 get 肯定要先有 set . @Override protected void service(HttpS ...
- 在react项目添加看板娘(react-live2d)
有留意到看板娘这么个东西,简直就是我们程序员+动漫迷的挚爱.但是回观网上,大多只是在老旧的html的静态引入.vue甚至也有几个不怎么维护的,还是老旧的不行的SDK2.X的版本.这这这这!我们的rea ...