java找到jar包上层的文件_在几十个JAR文件中找到一个类?

问题

你如何在很多jar文件中找到特定的类名?

(寻找实际的类名,而不是引用它的类。)

#1 热门回答(325 赞)

#Unix

使用jar(或unzip -v),grep和find命令。

例如,以下将列出与给定名称匹配的所有类文件:

for i in *.jar; do jar -tvf "$i" | grep -Hsi ClassName && echo "$i"; done

如果你知道要搜索的整个Java归档列表,则可以使用(符号)链接将它们全部放在同一目录中。

或者使用find(区分大小写)查找包含给定类名的JAR文件:

find path/to/libs -name '*.jar' -exec grep -Hls ClassName {} \;

例如,要查找包含IdentityHashingStrategy的存档的名称:

$ find . -name "*.jar" -exec grep -Hsli IdentityHashingStrategy {} \;

./trove-3.0.3.jar

如果JAR可以在系统中,并且可以使用locate命令:

for i in $(locate "*.jar");

do echo $i; jar -tvf $i | grep -Hsi ClassName;

done

#Windows

打开acommand prompt,切换到包含JAR文件的目录(或祖先目录),然后:

for /R %G in (*.jar) do @jar -tvf "%G" | find "ClassName" > NUL && echo %G

以下是它的工作原理:

for / R%G in(* .jar)do - 循环遍历所有JAR文件,递归遍历目录;将文件名存储在%G中。

@jar -tvf"%G"| - 运行Java Archive命令列出给定存档中的所有文件名,并将结果写入标准输出; @符号禁止打印命令的调用。

找到"ClassName"> NUL - 从jar命令的输出中搜索标准输入,用于给定的类名;如果匹配则将ERRORLEVEL设置为1(否则为0)。

&& echo%G - 如果ERRORLEVEL非零,则将Java归档文件名写入标准输出(控制台)。

#Web

#2 热门回答(53 赞)

#3 热门回答(52 赞)

Eclipse可以做到这一点,只需创建一个(临时)项目并将库放在项目类路径上。然后你可以很容易地找到这些课程。

我想到的另一个工具是Java Decompiler。它可以同时打开很多罐子,也有助于找到课程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值