如何在大量jar包中搜索特定字符

工作中定位某些问题时需要在jar包中搜索某些特定的字符。如果jar包数量比较少可以直接使用JD-GUI等反编译软件导出源码,但是如果jar包数目庞大,这种方式工作量就太大了。

现在介绍一种相对简单的方法,这种方式需要三种工具:

  • 能够批量解压jar包的程序,比如WinRAR。
  • 能够批量反编译jar包或者class文件的程序,比如jad(jd不支持命令行)。
  • 能够批量搜索文本文件的工具,比如FileLocator。

具体步骤:

假如需要在D:\jar\目录中的所有jar包中搜索Calendar一词:

首先需要利用WinRAR将所有jar包解压到独立的目录中:

打开命令行窗口,进入D:\jar\目录,输入下面命令(假设jad工具已经在path中设置):

    jad -o -r -sjava -dsrc ./**/*.class

会发现在该目录多了一个src目录。 注:反编译输出中经常会出现类似于The class file version is 49.0 (only 45.3, 46.0 and 47.0 are supported)的内容,说明jad只能编译49.0以下版本的class文件,虽然可以生成java文件,但是并没有正确反编译,如果大家知道其他可以在命令行执行,且不会出现类似问题的反编译工具可以告诉我。当然有一个比较折中的办法是使用我写的一个批量修改class文件版本号的小程序(通过邮件与我联系),通过修改版本号将class文件伪装成低版本的,供jad读取,但是这种方式不支持高版本的特性,比如拉姆达表达式。

然后使用FileLocator进行搜索即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Flutter&Dart

DartVM服务器开发(第三天)--pub管理器、返回html页面

右键点击项目名,New--File,命名为:pubspec.yaml 并在文件里面输入下面内容 (因为在使用外部包时,首先你应该是一个包,所以下面这个内容是...

1884
来自专栏JadePeng的技术博客

Mediawiki 生成google sitemap

首先,看扩展: Extension:Google Sitemap 在扩展页面看到下面的说明: Note: Since MediaWiki 1.6, the Me...

3728
来自专栏linux运维学习

linux学习第六十七篇:告警系统主脚本,告警系统配置文件,告警系统监控项目

告警系统主脚本 把shell脚本放到/usr/local/sbin/下 创建mon目录来存放告警系统脚本。在/mon目录分别创建bin,conf,log,mai...

33913
来自专栏Golang语言社区

Linux命令行:find的26个用法示例

作者 | Wray 来自 | http://www.codebelief.com/ Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根...

34913
来自专栏Golang语言社区

Linux命令行:find的26个用法示例

Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如权限、拥有者、修改日期/时间、文件大小等等。在这篇文章中,我...

35513
来自专栏北京马哥教育

[干货]varnish原理|杨过同学

Varnish是一款高性能的开源HTTP加速器(其实就是带缓存的反向代理服务),可以把http响应内容缓存到内存或文件中,从而提高web服务器响应速度。与传统的...

2846
来自专栏C/C++基础

Linux下使用gdb调试core文件

当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产生core文件。core文件是程序运行状态的内存映...

1323
来自专栏linux驱动个人学习

Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)【转】

Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2)

1092
来自专栏java一日一条

理解Cookie和Session机制

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确...

791
来自专栏云计算与大数据

研发:Idea工具因为版本工具设置问题,导致全是红色

I have the current status of my files in the folders coloured red/brown. I tried...

973

扫码关注云+社区