gpt4 book ai didi

java - jdeps 相当于 Java 7

转载 作者:行者123 更新时间:2023-11-29 08:38:22 25 4
gpt4 key购买 nike

我需要分析 jar 中的不同 .class 文件使用(引用)了哪些类。这个我知道

jdeps -v example.jar

产生这个输出。不幸的是,如果用户只有 JDK 1.7,我需要一个可行的解决方案。这是如何实现的?

最佳答案

我已经能够使用 javap -c 和正则表达式过滤器获得看似不错的结果。

我使用cygwin来获取我的结果,但是你应该可以在任何环境下这样做,你只需要一个解压工具,javap和一个工具执行正则表达式。在当前的 Windows 版本中,powershell 将提供这些功能。

以下代码将列出 jar 文件中每个类引用的类:

mkdir workDir
unzip yourJar.jar -d workDir
shopt -s globstar
for classFile in **/*.class; do
echo "Classes used in $classFile :"
javap -c "$classFile" | grep -Eo "([a-zA-Z0-9]+/)+[A-Z][a-zA-Z0-9]*" | sort -u
echo
done

你说你想要在 jar 文件中引用类,所以假设你不想要每个类的细节,这应该可行:

mkdir workDir
unzip yourJar.jar -d workDir
shopt -s globstar
for classFile in **/*.class; do
javap -c "$classFile" | grep -Eo "([a-zA-Z0-9]+/)+[A-Z][a-zA-Z0-9]*"
done | sort -u

请注意,这会漏掉不遵循约定的类,例如在默认包中定义的类或名称不是以大写字母开头的类。

您还将检索限定名称以 L 开头的类:这表示数组,如果您只关心类名,您可能想去掉那个 L。还有其他类似的单字母修饰符我不记得了。

关于java - jdeps 相当于 Java 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42156720/

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