专栏首页Aloys的开发之路如何在大量jar包中搜索特定字符

如何在大量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 条评论
登录 后参与评论

相关文章

  • 创建和使用Windows静态链接库

    首先明确这篇文章的目的,我希望大家能够通过这篇文章了解一下如何在实际工作中创建和使用Windows平台下的静态链接库。关于链接库的概念,希望大家参考维基百科”L...

    用户1221057
  • oracle表空间不足相关问题解决办法

    oracle 临时表空间和数据表空间 Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。重启数据...

    用户1221057
  • javadoc相关问题

    src源代码生成html格式文档:http://www.cnblogs.com/shenliang123/archive/2012/04/23/2466483....

    用户1221057
  • android打包引用第三方jar出现的错误

    今天终于完成了近一个月的App开发工作,对程序进行混淆导出签名apk包时,却出现了如下的错误: Proguard returned with error cod...

    xiangzhihong
  • 安卓开发之Activity传递参数

    1、知识点:启动activity、注册activity、button绑定监听事件、传递参数、获取参数 2、传递参数以及绑定监听代码(注意如果绑定监听出现错误:需...

    苦咖啡
  • Android四大组件完全解析(一)---Activity

    本文参考\android\android\frameworks\base\core\java\android\app\Activity.java文件中的类注释,...

    fanfan
  • 提示[译] Android 生命周期备忘录 —— 第四部分:ViewModel、半透明 Activity 及启动模式

    ViewModel 的生命周期非常简单:它只有 onCleared 这一个回调。但是,这个函数的作用域在 activity 和 fragment 中是有区别的:

    Android 开发者
  • IDEA正确打开源码姿势

    以前习惯用eclipse查看源码,最近在使用IDEA,IDEA查看源码相对简单很多。

    幽鸿
  • SAP Hybris的Master Tenant和Netweaver的System Client

    根据help.hybris.com的介绍,每个Hybris server只有1个master tenant,该tenant自动创建且不能删除。

    Jerry Wang
  • Jenkins构建Springboot

    一定不要用yum安装jdk,软链接真狗血,docker外挂盘找不到软链接,而我用了yum装了jdk,(千万别图快 ,不想去官网下载压缩包,然后rz上传,然后解压...

    Java程序员也要new个对象

扫码关注云+社区

领取腾讯云代金券