【发布时间】:2017-02-09 04:54:36
【问题描述】:
我正在尝试在 jar 文件中打印包的所有类的公共方法,到目前为止,我只能使用以下方法打印类名:
jar -tf my.jar
但是现在我想在一个 jar 文件中打印一个包的所有类的所有方法,我该如何使用命令提示符来做到这一点。
我见过 javap 命令,但它不起作用。我找不到我想要的示例。
【问题讨论】:
我正在尝试在 jar 文件中打印包的所有类的公共方法,到目前为止,我只能使用以下方法打印类名:
jar -tf my.jar
但是现在我想在一个 jar 文件中打印一个包的所有类的所有方法,我该如何使用命令提示符来做到这一点。
我见过 javap 命令,但它不起作用。我找不到我想要的示例。
【问题讨论】:
jar tf 将为您列出内容。
javap 将允许您查看课程的更多详细信息(请参阅工具指南here)。
例如,如果您在 jar myjar.jar 中有一个名为 mypkg.HelloWorld 的类,那么运行它就像
javap -classpath myjar.jar mypkg.HelloWorld
【讨论】:
从jar文件中提取类然后运行
unzip my.jar
find -name '*.class' | xargs javap -p > myjar.txt
myjar.txt 文件将包含 jar 内的类中的所有成员。之后可以直接搜索方法。
【讨论】:
#!/bin/sh
jar tf your.jar | grep '.class$' | tr / . | sed 's/\.class$//' | xargs javap -public -cp your.jar
它的作用是:列出 your.jar 的内容,过滤掉所有不以 .class 结尾的内容,用句点替换所有斜杠,并去掉 .class 后缀。这以可以传递给 javap 的形式为我们提供了 your.jar 中的所有类,我们这样做了。
类路径设置为 your.jar 后,javap 会反汇编我们传递给它的每个类(即所有类),并打印其中可公开访问的内容,或者换句话说:your.jar 的公共 API .
【讨论】: