【问题标题】:How to dump contents of a Java library to the console?如何将 Java 库的内容转储到控制台?
【发布时间】:2026-02-03 03:50:01
【问题描述】:

是否有将库或JAR 文件的内容转储到控制台的工具?

我正在寻找DUMPBIN /SYMBOLS 的Java 对应物,它适用于Windows 本机模式库。对于 C# 和 .NET 的其余部分,有很多可视化工具,例如 .NET Reflector 和 Visual Studio 中内置的对象浏览器。总而言之,我更喜欢命令行工具,但我将不胜感激:)

(我刚刚开始在 Windows 上使用 Java 和 Scala。)

【问题讨论】:

  • 到底想要完成什么?也许这是我对 JVM 和脚本语言的孤立,但你为什么需要这样做?
  • 与您在进入目录时说“dir”或“ls -l”的原因相同。要查看其中的内容,请了解事物如何组合在一起,查看一些您可能没有注意到的名称(意外发现),以进行发现、概述和引导探索。出于同样的原因,您在到达那里时会查看城市地图,即使它并没有告诉您有关建筑物的所有细节。

标签: java scala command-line console


【解决方案1】:

您要查找的命令是:

jar tf <jarfilename>

【讨论】:

    【解决方案2】:

    你可以解压一个JAR文件(jar xf my.jar)来查看内容;如果您想在代码中执行此操作,java.util.jar 中有用于处理 JAR 文件的工具。

    或者,如果您知道包层次结构的一部分,您可以在 Scala REPL 中键入它的一部分,然后点击选项卡以获取有效完成的列表。例如:

    scala> java.util.jar.   <-- hit tab here
    Attributes              JarEntry                JarException            
    JarFile                 JarInputStream          JarOutputStream         
    JarVerifier             JavaUtilJarAccessImpl   Manifest                
    Pack200                 
    

    但是,如果没有 API 文档,很难弄清楚如何使用这些东西。您的第一步应该几乎总是尝试找到文档并查看它们。

    【讨论】:

    • Scala REPL 中还有 :javap -v &lt;Class&gt; 命令,它显示了命名类的 JVM 字节码。
    • 谢谢!是的,我希望该列表作为准确名称的拼写提醒,并获得粗略的概述。就像我 cd 或 pushd 到某个目录时一样,我经常使用“ls -l”或“dir”。结果并没有告诉我文件中有什么——它没有语义深度,它只是提醒我那里有什么,并为我提供一个总体概述框架,以刷新我对整个内容如何组合在一起的记忆。
    【解决方案3】:

    如果你知道类名:

    $ javap -classpath jarfile some.package.in.that.jarfile.ClassName
    

    您还可以“脚本化”它,以便它遍历 jar 文件中的所有类并为每个类运行 javap

    【讨论】:

      【解决方案4】:

      还请注意,JAR 文件只是一个压缩文件,因此任何ZIP 实用程序都可以。大多数 IDE 都提供探索您添加到项目的 JAR 库的功能(例如Eclipse)。

      【讨论】:

        【解决方案5】:

        如前所述,JAR 文件是 ZIP 文件,可以用相同的方式提取。

        要浏览 JAR 文件中的类,我建议您使用 IDE。将 JAR 文件作为库依赖项添加到您的项目中,然后您应该能够浏览类和方法。

        如何获取 JAR 文件的源代码(如果可能的话)?

        【讨论】:

          最近更新 更多