【问题标题】:Viewing contents of a .jar file [closed]查看 .jar 文件的内容 [关闭]
【发布时间】:2010-09-24 03:30:09
【问题描述】:

在 jar 文件中查看类、方法、属性等的最简单方法是什么? 我正在寻找与非常有用的 Lutz Roeder .NET Reflector - for Java

等效的东西

【问题讨论】:

  • @KolobCanyon 是的,但他们评价最高的答案是在被问到这个问题的同一天提交的
  • 答案来自:https://superuser.com/a/808938/1045397 用vim vim file_name.jar就可以了

标签: java jar viewer


【解决方案1】:

我通常用 7-Zip 打开它们...它至少允许查看包、类和资源。
如果我需要查看方法或字段,我会使用 Jad,但当然,最好还是依赖(好的)JavaDoc...

现在,SO 上的某处提到了一些 Eclipse 插件,以查找类所在的 jar 文件,也许它们可以做更多(即您要求的)。

[编辑] 对 SO 线程的引用。不是问什么,而是以某种方式相关,因此很有用:Java: How do I know which jar file to use given a class name?

【讨论】:

【解决方案2】:

Use WinRar。它将完整地为您打开文件夹结构。还允许在存档中进行编辑,同时保留路径。

毕竟,JAR 文件只是 ZIP 存档。

【讨论】:

    【解决方案3】:

    嗯,jar 文件只是一个 zip 文件,所以如果你解压缩它(使用你最喜欢的解压缩工具),你会得到里面的所有文件。

    如果您想在类文件中查看方法,则需要一个工具。正如 PhiLho 所提到的,Eclipse 能够做到这一点(默认情况下),我认为大多数 Java IDE 都能够做到这一点。

    【讨论】:

      【解决方案4】:

      你可以试试JarSpy。我使用它的一个 IDEA 插件版本。

      【讨论】:

        【解决方案5】:

        使用 JDK,jar -tf 将列出 jar 中的文件。 javap 将为您提供来自特定类文件的更多详细信息。

        【讨论】:

        • @salvob 您不需要像tar 后面那样使用连字符,并且选项是强制性的。
        • 仅供参考,您可能需要将 C:\Program Files\Java\jdk<version>\bin 添加到您的系统或用户 PATH 环境变量中,然后才能将 jar 用作系统命令。 ( 是你的 jdk 版本号。在C:\Program Files\Java 中查看)
        • javap 示例:javap -classpath test.jar com.yourpackage.HelloWorld
        • 要查看非类文件(如清单)的内容,您希望执行以下操作:tar -xOzf test.jar jar tf test.jar | grep MANIFEST
        【解决方案6】:

        我更喜欢JAR Browser,它有一个简单的界面,您可以在其中浏览多个 JAR,并同时跨多个 JAR 搜索特定类。

        【讨论】:

          【解决方案7】:

          Jad 很笨拙,不再维护。我已经切换到"Java Decompiler",它有一个漂亮的用户界面并支持新的语言功能。

          不过,我使用的每个反编译器都会遇到无法成功反编译的代码。对于那些,它有助于理解由标准 JDK 工具生成的反汇编 Java 字节码,javap

          【讨论】:

            【解决方案8】:

            Eclipse 3.4 JDT

            这不是最快的方法,因为你必须先把它拖到你的日食中。 但是即使启用了反编译,您也将拥有完整的 java 类浏览。

            【讨论】:

              【解决方案9】:

              现在你可以用大多数解压工具打开它们,然后如果你想查看源代码,只需获取 DJ Java Decompiler 之类的东西。

              【讨论】:

                【解决方案10】:

                您的 IDE 也应该支持这一点。我的 IDE (SlickeEdit) 将其称为“标签库”。只需为 jar 文件添加一个标签库,您应该能够以分层方式浏览类和方法。

                【讨论】:

                  【解决方案11】:

                  如果我理解正确,您不仅希望看到类,还希望看到方法、属性等。我知道可以做到这一点的唯一工具是 Eclipse - 如果您将 jar 添加到项目类路径中,您将能够使用通常的包资源管理器通过方法和属性浏览其类。

                  无论如何,这对于一个好的独立 Java 工具来说是个好主意

                  【讨论】:

                  • 请注意,jar 需要位于“Referenced libraries”文件夹中,而不仅仅是“libs”。对于 Apache Commons 库,您无需浏览 source.jar,而是浏览原始文件,然后在 Eclipse 询问时附加源代码。
                  【解决方案12】:

                  我已将 Windows 中的默认操作设置为“使用 WinZip 打开”。这使得将 JAR 作为归档文件进行管理变得很容易。您甚至可以手动添加/删除文件。

                  【讨论】:

                    【解决方案13】:

                    方法名称、字段等

                    通过在 IDE 中将 jar 添加到项目中,通常可以看到方法和字段名称,但看不到详细的实现。 NetBeans 可以,Eclipse 可能,IntelliJ 可能等等。您可以直接在 IDE 中浏览 jar 结构。

                    只是内容

                    对于诸如查看内容之类的任何事情,您都可以使用:

                    • jar tvf jarfile.jar
                    • winzip 或任何 zip 工具

                    源代码

                    要访问源代码,您可以使用 JAD 等反编译器或其前端或其他反编译器。如果代码被混淆了,那么...

                    【讨论】:

                      【解决方案14】:

                      在 Eclipse 3.4 中做

                      1. 将有问题的 jar 文件拖到 Java 项目中。将显示 jar 文件的副本。
                      2. 右键单击jar文件,然后选择“构建路径”->“添加到构建路径”。
                      3. Jar 文件被移动到“Referenced Libraries”节点,它可以在 Project Explorer 窗格中打开和导航。

                      如果查看源代码也有问题,请打开一个新问题。

                      对于 Jar 文件级别的导航(作为 zip 文件),我使用 7zip,它运行良好,并且允许查看和编辑条目,这对于排除故障很有帮助。

                      【讨论】:

                        【解决方案15】:

                        在 Mac 上有 Jarzilla

                        【讨论】:

                          【解决方案16】:

                          我个人用的是JD-GUI。它是一个免费的“反编译器”,因为它允许您查看源代码、类和类中的对象,以及在左侧的树形菜单中查看文件结构。但是,它不允许您直接修改类。

                          JD-GUI官网:http://jd.benow.ca/

                          【讨论】:

                          • 这适用于跨平台,而另一个答案中提到的 7-Zip 是 Windows 特定的。
                          • 我在 OS X 上使用了 Archive Utility,效果很好。无论平台如何,大多数 (un)zip 实用程序都应该可以工作。
                          【解决方案17】:

                          如果您在 Windows 中并使用 powershell,并且您正在寻找 jar 中的文件,您可以这样做:

                          jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}
                          

                          【讨论】:

                            【解决方案18】:

                            一种方法是在“包资源管理器”中打开透视图。这样做你可以看到你的 jar 的结构和类的细节。为此,请使用包资源管理器检查项目中的库文件夹。

                            窗口>>显示视图>>其他>>Java>>包资源管理器

                            另一种方法是,您可以将 JarPlug 用作 Eclipse 插件。这适用于 eclipse/springsource

                            http://jar-plug.sourceforge.net/

                            【讨论】:

                              【解决方案19】:

                              我使用 JarExplorer 或 JarVisualizer

                              【讨论】:

                                【解决方案20】:

                                Bndtools 为 Eclipse 提供了一个免费的 JAR 查看器插件。

                                添加Eclipse update site 并仅安装查看器。

                                【讨论】:

                                  【解决方案21】:

                                  扩展 Tom Hawtin 的答案,您可以通过管道将列表过滤掉所需的类或文件:

                                  jar tf my-fat-jar-file.jar | grep filename

                                  这应该适用于 bash/zsh 和类似的,或者 emacs 的 eshell。

                                  补充资料:https://docs.oracle.com/javase/tutorial/deployment/jar/view.html

                                  【讨论】:

                                    【解决方案22】:

                                    如果你想看看里面有什么,只需重命名为下面的第一个选项..

                                    1. F2 & Rename to jarfile.zip //使用任意解压器...

                                    2. jar tvf jarfile.jar

                                    3. jar tf jarfile.jar

                                    【讨论】:

                                      【解决方案23】:

                                      我认为 Java Decomplier 是你最好的选择,你可以从这里下载:http://jd.benow.ca/

                                      【讨论】:

                                        【解决方案24】:

                                        如果有人还不知道这一点,JAR 文件只是一个 ZIP 文件 包含程序的类、资源等,以及一些 元数据。您可以提取一个来看看它是如何组合在一起的。

                                        因此我使用unzip 命令,它易于记忆和使用。

                                        unzip -l <jar-file-name>.jar

                                        例如,如果您有一个名为test.jar 的jar 文件,那么unzip -l test.jar 将列出该jar 文件的所有内容。

                                        虽然所有其他答案都很棒,但在大多数答案中,您必须使用一些软件,如 7 zipJDK 或其他一些 eclipse 工具,而这并不要求您拥有任何这些大软件默认在 linux 和 mac 中提供,因此它非常轻巧且易于使用

                                        您也可以使用zipinfo <your jar file>。如果您的操作系统支持这一点。

                                        【讨论】:

                                        • @Boop 感谢您的建议。将其添加到我的答案中
                                        • 如果文件资源管理器支持 zip,将 jar 重命名为 .zip 也可以(例如在 windows 上)
                                        【解决方案25】:

                                        java -xf some-j.jar 将解压缩 JAR 文件。

                                        【讨论】:

                                        • 这是 jar -xf someJar.jar
                                        【解决方案26】:
                                        jar -tvf file_name.jar
                                        

                                        上面只会打印文件名

                                        要查看文件的内容,您可以通过以下方式提取文件夹中的文件

                                        jar -xvf file_name.jar
                                        

                                        这将解压缩 jar 文件并将内容放在运行它的同一目录中。

                                        或者在 Windows 中将 .jar 文件重命名为 .zip 然后您可以解压缩以提取和查看 jar 文件的内容。因为 jar 在内部是一个 zip 文件。

                                        【讨论】:

                                          【解决方案27】:

                                          我的要求是查看 jar 内的文件(如属性文件)的内容,而不实际提取 jar。如果有人像我一样到达这个线程,试试这个命令 -

                                          unzip -p myjar.jar myfile.txt
                                          

                                          这对我来说效果很好!

                                          【讨论】:

                                            【解决方案28】:

                                            这个Jar Explorer 已经足够好了。
                                            支持三种反编译器类型:JD、Procyon 和 Fernflower。
                                            允许在任何 java 存档中搜索文件和重复项。
                                            用户还可以通过 D&D 文件修改 jar 并编辑一些非类文件。

                                            【讨论】:

                                            • 请不要只发布一些工具或库作为答案。至少在答案本身中展示how it solves the problem
                                            • 我一直使用“jd-gui”。我不知道这件事。谢谢。感谢您的信息
                                            【解决方案29】:

                                            您可以通过执行以下操作从 Windows 资源管理器中查看 JAR 文件(如 ZIP 文件):

                                            • 以管理员身份运行命令提示符
                                            • 从命令行输入:

                                              assoc .jar=压缩文件夹

                                            • 当你这样做的时候,你也可以对 WAR 和 EAR 文件做同样的事情:

                                              assoc .war=CompressedFolder

                                              assoc .ear=CompressedFolder

                                            【讨论】:

                                              【解决方案30】:

                                              查看 jar 文件中的类、方法、属性等的最简单方法是使用“winrar”和“7-Zip”等程序。

                                              • 如果未安装,请下载 winrar 或 7-zip 程序
                                              • 然后右键点击你的jar文件
                                              • 点击使用 winrar 或 7-zip 打开

                                              【讨论】:

                                                猜你喜欢
                                                • 2019-01-15
                                                • 1970-01-01
                                                • 2015-12-18
                                                • 2019-03-05
                                                • 2012-12-03
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 2018-01-11
                                                • 1970-01-01
                                                相关资源
                                                最近更新 更多