在 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 zip
orJDK
或其他一些 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.jar
jar 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之类的东西。
Bndtools为 Eclipse 提供了一个免费的 JAR 查看器插件。
添加Eclipse 更新站点并仅安装查看器。
我认为 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