如何使用javap工具在jar文件中打印类结构?

Pra*_*u R 16 java command-line javap

我想使用javap工具列出jar中类文件的方法.我该怎么做才能列出jar中所有类文件的方法和成员.现在我能够一次只为一个班级做这件事.

我期待像我说的那样

javap java.lang.*
Run Code Online (Sandbox Code Playgroud)

它应该在java.lang包中登记所有类的方法和成员.如果javap不具备此功能,是否有可用的工具?

Dav*_*ant 27

#!/bin/bash
# Set the JAR name
jar=<JAR NAME>
# Loop through the classes (everything ending in .class)
for class in $(jar -tf $jar | grep '.class'); do 
    # Replace /'s with .'s
    class=${class//\//.};
    # javap
    javap -classpath $jar ${class//.class/}; 
done
Run Code Online (Sandbox Code Playgroud)

  • javap很乐意用`/`而不是`.`来反汇编类名,你只需要删除`.class`后缀.我正在使用`zipinfo -1 $ {jar}\*.class | sed's /\.class //'| xargs javap -classpath"$ jar"-c -l -private> $ {jar} .javap` (6认同)

Bex*_*Bex 12

更容易的是

JAR=<path to jarfile> \
javap -classpath $JAR $(jar -tf $JAR | grep "class$" | sed s/\.class$//)
Run Code Online (Sandbox Code Playgroud)

  • 将JARNAME =/path /添加到/ jar <其余命令>并将整个操作保持在一行中 (2认同)