怎么复原java项目文件_从jar包还原出java源码(项目文件)
上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工程没有代码,只有生产环境的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源码(项目文件)相关推荐
- .jar文件还原java文件_从jar包还原出java源码(项目文件)
原文转载至:https://blog.csdn.net/mxmxz/article/details/73043156 上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工 ...
- java使用eclipse打jar包_Eclipse对Java项目打Jar包
在本Java项目中,如下图一所示,Java项目含有外部依赖Jar包 -- fastjson-1.2.29.jar 包. 在经历了多次的失败后,最后我终于使用 Eclipse 对 "Java ...
- 遗传算法锦标赛选择java实现_多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c...
tourselect.c 文件中共有两个函数: selection (population *old_pop, population *new_pop) individual* tournament ...
- linux java jar打包_【Java】Java程序打包成jar包在Linux上运行
当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...
- java jar包资源文件_深入jar包:从jar包中读取资源文件
我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...
- cmd库的导入Java,在cmd命令窗口导入第三方jar包来运行java文件
在cmd命令窗口导入第三方jar包来运行java文件,以下测试都是基于window环境,Linux环境没有测试. 1.编译 使用命令javac -cp或者javac -classpath 本机测试:如 ...
- oracle 12c java 驱动,oracle12c驱动jar包
oracle12c驱动jar包是oracle数据库的一款专用的加载驱动包,如果电脑缺少这款jar包的话就会出现jdbc无法连接的问题,可以下载这款jar包,放到Java包下就可以了,需要的朋友可以来本 ...
- Docker安装java环境并部署jar包运行
Docker安装java环境并部署jar包运行 作为一个前端,了解后端部署jar包也是有必要的,在这里就我学习的,做一个简单的笔记,这里可以结合我的商品的增删改查的java文章一起看. java实现商 ...
- 单个java文件中引入jar包
在我们写demo,只有一个java文件时,有时候会遇到需要引用jar包问题,去idea建个项目未免实在太麻烦,其实java是支持单个java文件引用jar包的,需要在编译时添加相关选项 在执行编译是, ...
- 【windows】jar包不显示java图标,反而显示的是白色
jar包不显示java图标,反而显示的是白色 你是不是这有遇到这样的问题,才会打开我这篇博客,那你就来对了!!! 本文主要是解决右键打开方式,出现该弹窗的同学们. 错误描述: 你的jar包全部显示为白 ...
最新文章
- 《WCF技术内幕》翻译1:《WCF技术内幕》目录和作者简介
- 【剑指offer-Java版】42翻转单词顺序VS左旋转字符串
- pytorch 多进程读写同一个文件
- Oracle建立全文索引详解
- 前端学习(3314):redux的基本操作2
- 渐变色--浏览器兼容性
- 如何升级PowerShell
- 北大开源分词工具包: 准确率远超THULAC、jieba 分词
- android音频测试方法,Android左右声道音频文件测试
- java模板变量_IntelliJ IDEA实时模板变量
- 第三集 be 动词一般动词的过去式
- “数据分析师”招聘信息的数据分析
- windows系统加了一个别的系统!------centos_6 by VMware
- Photoshop使用边缘功能打造后期画意
- 工作随记3:一次交换机环路故障
- maven 导入jar包失败编译代码失败解决方案
- mysql学生表_课程表_选课表,连表查询
- Promise.resolve几种情况
- 北大青鸟 JQuery 制作特效 第一章 课后简答题
- 独立按键控制继电器开关