原文转载至:https://blog.csdn.net/mxmxz/article/details/73043156

上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工程没有代码,只有生产环境的jar包供使用。。边吐(咒)槽(骂)边在SVN服务器上四处翻找,想找到这个工程的源码,毕竟没源码怎么跑起来这个工程?不能跑起来怎么改造调试?

确认真的找不到源码之后。。冷静下来开始研究这个前辈留下的坑

0. get jar包

从生产环境down下来jar包,打开看了一眼:

黑人问号脸。。这是啥?为什么jar包里面还有java文件?还有这种操作?

1. 初次尝试

把jar包的内容解压出来之后,就想把所有的class文件删掉,只留下java文件,这样不就get了源码?

结果发现想的太简单了,从上面的截图就能看出,class文件在2010年的5月25号有更新,而java文件是2010年3月31号更新的,这就说明class文件比java文件更新,所以这些java文件都是过期的。。【坑啊

2. 再次尝试

如果只有一个class文件,怎么查看java代码这个很简单,平时用JD-GUI或类似的反编译工具就可以了,但印象中只能一个文件一个文件的看,我手里有一个jar包可怎么还原源码导进MyEclipse啊。。

去google了半天,都没有找到好的答案(事后发现了答案,和我的做法相同)

一阵沮丧,然后无聊打开了JD-GUI,打开jar包后,随手点到了左上角的File,咦??

发现了一个save!一阵兴奋,然后点了保存试了一下,发现导出来的zip文件就是反编译后的整个源码!

3. 小问题

打开zip文件看了一眼,发现:

因为jar包里面有同名的class文件和java文件,导出来的反编译源码也保留了旧的java文件在里面(从文件时间可以看出)

4. 解决小问题

这里用了压缩软件的命令,我平时用的是7-ZIP,简单搜索学习了一下,步骤如下:

a. 将7-ZIP的目录配置到系统环境变量(PATH)中

b. 打开命令行,到jar包所在目录

c. 执行命令

7z d xxx.jar *.java -r

效果如图:

5. 重新保存源码

删除了原jar包中的java文件后,再次用JD-GUI保存反编译源码文件,搞定

6. 最后

欢声笑语中获得了源码后,发现想启动这个项目还有些小麻烦,不过跟不知道怎么从jar包还原出工程源码相比,都是小问题了!

.jar文件还原java文件_从jar包还原出java源码(项目文件)相关推荐

  1. 遗传算法锦标赛选择java实现_多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c...

    tourselect.c  文件中共有两个函数: selection (population *old_pop, population *new_pop) individual* tournament ...

  2. android studio生成Jni头文件 java10,java11删除了javah,改用javac直接用源码生成jni头文件。 java8是用javah

    android studio生成Jni头文件 鼠标放本地方法上去,点提示来创建. java10,java11及以上   生成jni头文件 java10,java11删除了javah.改用javac直接 ...

  3. 基于tutk方案的p2p源码_基于JAVA的局域网文件共享平台P2P实训项目源码(毕业设计 课程设计)...

    [实例简介] 基于JAVA的局域网文件共享平台P2P实训项目源码(毕业设计 课程设计). 可直接运行.做毕业设计.课程设计或者想研究下技术的可以下载学习.需要更多资源的可以关注我. [实例截图] [核 ...

  4. java实现魔方_闲来无事,用java写了一个魔方小程序。附源码 | 学步园

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

  5. 基于SpringBoot的企业OA系统的设计与实现,Java毕业设计项目,高质量毕业论文范例,源码,数据库脚本,项目导入运行视频教程,论文撰写教程

    目录 课题背景 项目技术栈 适合对象 适合课题 项目功能概述 高质量论文范例(附原图,可再次编辑和修改) 毕业设计撰写视频教程 部分运行截图 课题背景 82.7%的受访白领表示认为数字化技术极大地提高 ...

  6. java计算机毕业设计钢材出入库管理系统(附源码、数据库)

    java计算机毕业设计钢材出入库管理系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe ...

  7. Java毕设项目城市公交系统计算机(附源码+系统+数据库+LW)

    Java毕设项目城市公交系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...

  8. java计算机毕业设计BS用户小票系统(附源码、数据库)

    java计算机毕业设计BS用户小票系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe( ...

  9. JAVA计算机毕业设计演唱会购票系统计算机(附源码、数据库)

    JAVA计算机毕业设计演唱会购票系统计算机(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclisp ...

最新文章

  1. 【python教程入门学习】自动抢票之 12306 登录篇
  2. R使用深度学习LSTM构建时间序列预测模型
  3. java操作ad域 免证书
  4. Linux 文件与目录结构
  5. Base64编码 - Java加密与安全
  6. Codeforces Round #572 (Div. 2)(ABCD1D2E)
  7. java 动态生成getset_通过get、set方法,动态生成对象
  8. Android模拟器genymotion的安装和使用
  9. PHP 判断用户语言跳转网页
  10. 网络协议:超时与重传机制
  11. Redis学习总结(18)——Redis 常见的使用场景汇总
  12. 使用dbca创建oracle实例
  13. 撸一个vue的双向绑定
  14. MySQL数据库查询重复数据办法
  15. ncm 网络_江森楼宇自控网络控制模块NCM优势详解
  16. android 4.4 屏幕方向,Android4.4 增加屏幕旋转功能
  17. OpenDDS的学习和使用
  18. 《The industrial age of hacking》略读
  19. 基于OpenCV的土壤裂缝分割系统
  20. word没自动保存?===如何通过asd文件恢复

热门文章

  1. Labview2017安装及破解步骤
  2. Java 加解密工具类
  3. C++ 获取数组长度
  4. 自定义ProcessEngineConfiguration
  5. 淘宝店铺订单插旗接口(taobao.trade.memo.update淘宝店铺订单交易备注修改接口)代码对接教程
  6. 哪款软件可以测试网速上行,测试上行速度_怎样在自己电脑上检测网速的上行速率?...
  7. C语言printf格式化控制台移动光标
  8. [附源码]java毕业设计图书馆自习室管理系统
  9. 11月28日——培训第8天
  10. 发票识别+发票查验API-企业财务信息智能化与共享化建设