【问题标题】:java list all methods and classes in a jar file of specific package using cmdjava使用cmd列出特定包的jar文件中的所有方法和类
【发布时间】:2017-02-09 04:54:36
【问题描述】:

我正在尝试在 jar 文件中打印包的所有类的公共方法,到目前为止,我只能使用以下方法打印类名:

jar -tf my.jar

但是现在我想在一个 jar 文件中打印一个包的所有类的所有方法,我该如何使用命令提示符来做到这一点。

我见过 javap 命令,但它不起作用。我找不到我想要的示例。

【问题讨论】:

    标签: java cmd


    【解决方案1】:

    jar tf 将为您列出内容。

    javap 将允许您查看课程的更多详细信息(请参阅工具指南here)。

    例如,如果您在 jar myjar.jar 中有一个名为 mypkg.HelloWorld 的类,那么运行它就像

    javap -classpath myjar.jar mypkg.HelloWorld
    

    【讨论】:

    • 没有像 javap -classpath myjar.jar mypkg.* 这样的命令吗这里 * 表示所有类..
    • 然后尝试反射
    【解决方案2】:

    从jar文件中提取类然后运行

    unzip my.jar 
    find -name '*.class' | xargs javap -p > myjar.txt
    

    myjar.txt 文件将包含 jar 内的类中的所有成员。之后可以直接搜索方法。

    【讨论】:

    【解决方案3】:
    #!/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 .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2013-10-15
      • 2011-01-01
      • 2020-04-21
      • 2018-08-06
      相关资源
      最近更新 更多