上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工程没有代码,只有生产环境的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包还原出工程源码相比,都是小问题了!

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

  1. .jar文件还原java文件_从jar包还原出java源码(项目文件)

    原文转载至:https://blog.csdn.net/mxmxz/article/details/73043156 上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工 ...

  2. java使用eclipse打jar包_Eclipse对Java项目打Jar包

    在本Java项目中,如下图一所示,Java项目含有外部依赖Jar包 -- fastjson-1.2.29.jar  包. 在经历了多次的失败后,最后我终于使用 Eclipse 对 "Java ...

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

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

  4. linux java jar打包_【Java】Java程序打包成jar包在Linux上运行

    当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...

  5. java jar包资源文件_深入jar包:从jar包中读取资源文件

    我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...

  6. cmd库的导入Java,在cmd命令窗口导入第三方jar包来运行java文件

    在cmd命令窗口导入第三方jar包来运行java文件,以下测试都是基于window环境,Linux环境没有测试. 1.编译 使用命令javac -cp或者javac -classpath 本机测试:如 ...

  7. oracle 12c java 驱动,oracle12c驱动jar包

    oracle12c驱动jar包是oracle数据库的一款专用的加载驱动包,如果电脑缺少这款jar包的话就会出现jdbc无法连接的问题,可以下载这款jar包,放到Java包下就可以了,需要的朋友可以来本 ...

  8. Docker安装java环境并部署jar包运行

    Docker安装java环境并部署jar包运行 作为一个前端,了解后端部署jar包也是有必要的,在这里就我学习的,做一个简单的笔记,这里可以结合我的商品的增删改查的java文章一起看. java实现商 ...

  9. 单个java文件中引入jar包

    在我们写demo,只有一个java文件时,有时候会遇到需要引用jar包问题,去idea建个项目未免实在太麻烦,其实java是支持单个java文件引用jar包的,需要在编译时添加相关选项 在执行编译是, ...

  10. 【windows】jar包不显示java图标,反而显示的是白色

    jar包不显示java图标,反而显示的是白色 你是不是这有遇到这样的问题,才会打开我这篇博客,那你就来对了!!! 本文主要是解决右键打开方式,出现该弹窗的同学们. 错误描述: 你的jar包全部显示为白 ...

最新文章

  1. 《WCF技术内幕》翻译1:《WCF技术内幕》目录和作者简介
  2. 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串
  3. pytorch 多进程读写同一个文件
  4. Oracle建立全文索引详解
  5. 前端学习(3314):redux的基本操作2
  6. 渐变色--浏览器兼容性
  7. 如何升级PowerShell
  8. 北大开源分词工具包: 准确率远超THULAC、jieba 分词
  9. android音频测试方法,Android左右声道音频文件测试
  10. java模板变量_IntelliJ IDEA实时模板变量
  11. 第三集 be 动词一般动词的过去式
  12. “数据分析师”招聘信息的数据分析
  13. windows系统加了一个别的系统!------centos_6 by VMware
  14. Photoshop使用边缘功能打造后期画意
  15. 工作随记3:一次交换机环路故障
  16. maven 导入jar包失败编译代码失败解决方案
  17. mysql学生表_课程表_选课表,连表查询
  18. Promise.resolve几种情况
  19. 北大青鸟 JQuery 制作特效 第一章 课后简答题
  20. 独立按键控制继电器开关

热门文章

  1. Unity中的Assetbundle,Unity基础知识学习一
  2. 【服务治理】服务治理漫谈
  3. 3分钟下载好网易云付费音乐
  4. 如何区分abcd类地址_如何判断IP地址是A类B类还是C类
  5. 不同调制方式的包络和功率谱
  6. imx385驱动、imx307驱动、imx327驱动调试记录
  7. Linux | 文件系统与操作
  8. 归并排序——Java代码实现
  9. linux网络管理员认证考试,红帽认证系统管理员 (RHCSA) 考试
  10. 【PC工具】windows免安装录屏绿色软件,无需注册无水印绿色录屏软件