我正在尝试在jar文件中打印包的所有类的公共方法,截至目前我只能使用以下方式打印类名:
jar -tf my.jar
但是现在我想在jar文件中打印包的所有类的所有方法,如何使用命令提示符执行此操作。
我见过javap命令,但它没有用。我无法找到我想要的例子。
答案 0 :(得分:2)
jar tf
会为您列出内容。
javap
将允许您查看课程的更多详细信息(请参阅工具指南here)。
例如,如果你在jar myjar.jar中有一个名为mypkg.HelloWorld的类,那么就像
一样运行它javap -classpath myjar.jar mypkg.HelloWorld
答案 1 :(得分:0)
从jar文件中提取类,然后运行
unzip my.jar
find -name '*.class' | xargs javap -p > myjar.txt
myjar.txt文件将包含jar内的所有成员。您可以立即搜索方法。
答案 2 :(得分:0)
#!/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 .