gpt4 book ai didi

java - 在数百个已编译的 jar 中查找方法或符号调用

转载 作者:行者123 更新时间:2023-11-30 03:36:39 26 4
gpt4 key购买 nike

我花了最后一个小时寻找一种简单的方法来在数百个已编译的 jar 中查找符号和方法调用。我尝试将它们全部加载到 ide 中以使用搜索符号功能,但 ide 只索引公共(public)设置的索引,而不索引调用。你能想出一种简单的方法,不包括反编译一个又一个的 jar 吗?我每次都必须经常使用不同的 jar 组来执行此操作。

如果有任何能让我更进一步的想法,我将不胜感激。感谢您抽出时间。

最佳答案

针对每个 jar 中的每个类运行 javap

我将使用 unix“find”命令对给定目录中的每个 jar 文件应用复杂的 unzip-pipeline-into-javap:

find -iname \*.jar -execdir bash -c "

unzip -qql {} | # -l to list zip contents, and -qq to keep quiet.
sed 's/ */ /g' | # convert groups of spaces to a single space
cut -d ' ' -f 5 | # pull out 5th field of each unzip output line
grep '.class$' | # each line must end in ".class"
sed 's/.class$//' | # convert to java class name: remove trailing ".class"
tr '/' '.' | # convert to java class name: convert '/' to '.'
sort | # sort classnames
#
# And, finally, call 'javap' against each class, with most options enabled:
#
xargs /opt/java/jdk1.8.0_25/bin/javap -s -p -v -l -c -cp {}

" \; | gzip > every-jar-decompiled.txt.gz

在我的测试中,输出非常重要(100MB 的 jar 超过 1GB),所以我对其进行了 gzip 压缩。使用“zcat”或“zgrep”检查结果。

如果您使用的是 Windows,则可以使用 cygwin 来运行此命令。

关于java - 在数百个已编译的 jar 中查找方法或符号调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com