gpt4 book ai didi

java - 在几十个 JAR 文件中的某个地方找到一个类?

转载 作者:bug小助手 更新时间:2023-10-28 10:41:00 26 4
gpt4 key购买 nike

如何在大量 jar 文件中找到特定的类名?

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

最佳答案

Unix

在 Linux、其他 Unix 变体、Windows 上的 Git Bash 或 Cygwin 上,使用 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

语法变体:

find path/to/libs -name '*.jar' -print | \
while read i; do jar -tvf "$i" | grep -Hsi ClassName && echo "$i"; done

窗口

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

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

它是这样工作的:

  1. for/R %G in (*.jar) do - 循环遍历所有 JAR 文件,递归遍历目录;将文件名存储在 %G 中。
  2. @jar -tvf "%G"| - 运行 Java Archive 命令列出给定存档中的所有文件名,并将结果写入标准输出; @ 符号禁止打印命令的调用。
  3. find "ClassName"> NUL - 搜索标准输入,从 jar 命令的输出通过管道获取给定的类名;如果有匹配项,这会将 ERRORLEVEL 设置为 1(否则为 0)。
  4. && echo %G - 如果 ERRORLEVEL 不为零,则将 Java 归档文件名写入标准输出(控制台)。

网络

使用 search engine扫描 JAR 文件。

关于java - 在几十个 JAR 文件中的某个地方找到一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1342894/

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