在 jar 文件中查看类、方法、属性等的最简单方法是什么?我正在寻找与非常有用的Lutz Roeder .NET Reflector等效的东西- 用于 Java
31 回答
使用 JDK,jar -tf将列出 jar 中的文件。javap将为您提供来自特定类文件的更多详细信息。
我通常用 7-Zip 打开它们……它至少可以看到包、类和资源。
如果我需要查看方法或字段,我会使用 Jad,但当然,最好依赖(好的)JavaDoc ...
现在,SO 上的某处提到了一些 Eclipse 插件,以查找类所在的 jar 文件,也许他们可以做更多(即您要求的)。
[编辑] 参考 SO 线程。不是问什么,而是以某种方式相关,因此很有用:Java:在给定类名的情况下,我如何知道要使用哪个 jar 文件?
如果有人还不知道这一点,JAR 文件只是一个 ZIP 文件,其中包含程序的类、资源等以及一些元数据。您可以提取一个,看看它是如何组合在一起的。
因此,我使用unzip的是易于记忆和使用的命令。
unzip -l <jar-file-name>.jar
例如,如果您有一个带有名称的 jar 文件,test.jar那么unzip -l test.jar将列出 jar 文件的所有内容。
虽然所有其他答案都很棒,但在大多数答案中,您将不得不使用一些软件,如7 ziporJDK或其他一些 Eclipse 工具,而这并不要求您拥有任何这些大软件,并且它默认在 linux 中提供和mac,所以它非常轻巧且易于使用。
您也可以使用zipinfo <your jar file>. 如果您的操作系统支持这一点。
我个人用的是JD-GUI。它是一个免费的“反编译器”,因为它允许您查看源代码、类和类中的对象,以及在左侧的树形菜单中查看文件结构。但是,它不允许您直接修改类。
JD-GUI官网:http: //jd.benow.ca/
方法名称、字段等
通过在 IDE 中将 jar 添加到项目中,您通常可以看到方法和字段名称,但看不到详细的实现。NetBeans 可以做到,Eclipse 可能,IntelliJ 可能等等。您可以直接在 IDE 中浏览 jar 结构。
只是内容
对于诸如查看内容之类的任何事情,您可以使用:
jar tvf jarfile.jar- winzip 或任何压缩工具
源代码
要访问源代码,您将使用诸如 JAD 之类的反编译器或其前端或其他反编译器。如果代码被混淆,那么......
jar -tvf file_name.jar
上面只会打印文件的名称。
要查看文件的内容,您可以通过以下方式提取文件夹中的文件:
jar -xvf file_name.jar
这将解压缩 jar 文件并将内容放在运行它的同一目录中。
或者在 Windows 中将 .jar 文件重命名为 .zip 然后您可以解压缩以提取和查看 jar 文件的内容。因为 jar 在内部是一个 zip 文件。
扩展 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
使用 WinRar。它将完整地为您打开文件夹结构。还允许在存档中编辑,同时保留路径。
毕竟,JAR 文件只是一个 ZIP 存档。
If you like to see whats inside, simply rename as first option below..
F2 & Rename to jarfile.zip//Use any unzipper...jar tvf jarfile.jarjar tf jarfile.jar
如果我理解正确,您不仅希望看到类,还希望看到方法、属性等。我知道的唯一可以做到这一点的工具是 Eclipse——如果你将一个 jar 添加到项目类路径中,你将能够使用通常的包资源管理器来浏览它的类以及方法和属性。
无论如何,这对于一个好的独立 Java 工具来说是个好主意
Jad 很笨拙,不再维护。我已经切换到“Java Decompiler”,它有一个漂亮的 UI 并支持新的语言特性。
但是,我使用的每个反编译器都会遇到无法成功反编译的代码。对于那些,它有助于理解由标准 JDK 工具javap生成的反汇编 Java 字节码。
如果您在 Windows 中并使用 powershell,并且您正在寻找 jar 中的文件,您可以执行以下操作:
jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}
好吧,jar 文件只是一个 zip 文件,所以如果你解压缩它(使用你最喜欢的解压缩实用程序),你会得到里面的所有文件。
如果你想在类文件中查看方法,你需要一个工具。正如 PhiLho 所提到的,Eclipse 能够做到这一点(默认情况下),我认为大多数 Java IDE 都能够做到这一点。
在 Eclipse 3.4 中做
- 将有问题的 jar 文件拖到 Java 项目中。将出现 jar 文件的副本。
- 右键单击 jar 文件,然后选择“构建路径”->“添加到构建路径”。
- Jar 文件被移动到“Referenced Libraries”节点,它可以在 Project Explorer 窗格中打开和导航。
如果查看源代码也是一个问题,请打开一个新问题。
对于 Jar 文件级别的导航(作为 zip 文件),我使用 7zip,它运行良好,并且允许查看和编辑条目,这对于排除故障很有帮助。
一种方法是在“包资源管理器”中打开透视图。这样做你可以看到你的 jar 的结构和类的细节。为此,请使用包资源管理器检查项目中的库文件夹。
窗口>>显示视图>>其他>>Java>>包资源管理器
另一种方法是,您可以使用 JarPlug 作为 eclipse 插件。这适用于 eclipse/springsource
我的要求是查看 jar 中文件(如属性文件)的内容,而不实际提取 jar。如果有人像我一样到达这个线程,试试这个命令 -
unzip -p myjar.jar myfile.txt
这对我来说效果很好!
您可以通过执行以下操作从 Windows 资源管理器查看 JAR 文件(如 ZIP 文件):
- 以管理员身份运行命令提示符
从命令行输入:
assoc .jar=压缩文件夹
当您使用它时,您也可以对 WAR 和 EAR 文件执行相同的操作:
assoc .war=压缩文件夹
assoc .ear=压缩文件夹
这个Jar Explorer已经足够好了。
支持三种反编译器类型:JD、Procyon 和 Fernflower。
允许在任何 java 存档中搜索文件和重复项。
用户还可以通过 D&D 文件修改 jar 并编辑一些非类文件。

你现在可以用大多数解压工具打开它们,然后如果你想查看源代码,只需获取DJ Java Decompiler之类的东西。
我认为 Java Decomplier 是您可以从这里下载的最佳选择:http: //jd.benow.ca/

Eclipse 3.4 JDT
这不是最快的方法,因为你必须先把它拖到你的日食中。但是即使启用了反编译,您也将拥有完整的 java 类浏览。
I've set the default action in windows to "Open with WinZip". This makes it easy to manage JARs as archives. You can even add/remove files manually.
我更喜欢JAR Browser,它有一个简单的界面,您可以在其中浏览多个 JAR,并同时跨多个 JAR 搜索特定类。
我使用 JarExplorer 或JarVisualizer。
你可以试试JarSpy。我使用了一个 IDEA 插件版本。
您的 IDE 也应该支持这一点。我的 IDE (SlickeEdit) 将其称为“标签库”。只需为 jar 文件添加一个标签库,您应该能够以分层方式浏览类和方法。
在 Mac 上有Jarzilla
java -xf some-j.jar将解压缩一个 JAR 文件。
如果您甚至不知道您的 jar 路径在哪里,或者您的 JDK 路径在每个主机上都不同,那么大多数人都已经正确回答了这里是 linux 的一种解决方案
$(find / -type f -name "jar" 2>&1 |grep '/JDK' |head -1 ) tf FULLY_QUALIFIED_NAME_TO_YOUR_FILE
