269

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

4

31 回答 31

322

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

于 2008-11-26T15:09:11.090 回答
63

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

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

[编辑] 参考 SO 线程。不是问什么,而是以某种方式相关,因此很有用:Java:在给定类名的情况下,我如何知道要使用哪个 jar 文件?

于 2008-11-26T12:24:24.700 回答
42

如果有人还不知道这一点,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>. 如果您的操作系统支持这一点。

于 2017-02-21T10:52:56.777 回答
36

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

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

于 2012-09-14T12:53:41.363 回答
16

方法名称、字段等

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

只是内容

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

  • jar tvf jarfile.jar
  • winzip 或任何压缩工具

源代码

要访问源代码,您将使用诸如 JAD 之类的反编译器或其前端或其他反编译器。如果代码被混淆,那么......

于 2009-06-13T17:49:47.393 回答
16
jar -tvf file_name.jar

上面只会打印文件的名称

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

jar -xvf file_name.jar

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

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

于 2018-12-20T09:11:37.433 回答
12

扩展 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

于 2015-07-29T11:00:36.663 回答
8

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

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

于 2008-11-26T12:27:01.993 回答
6

If you like to see whats inside, simply rename as first option below..

  1. F2 & Rename to jarfile.zip //Use any unzipper...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar

于 2015-11-13T10:39:01.330 回答
5

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

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

于 2008-12-21T12:49:15.633 回答
4

Jad 很笨拙,不再维护。我已经切换到“Java Decompiler”,它有一个漂亮的 UI 并支持新的语言特性。

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

于 2008-11-26T16:31:16.043 回答
3

如果您在 Windows 中并使用 powershell,并且您正在寻找 jar 中的文件,您可以执行以下操作:

jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}
于 2012-10-17T17:39:01.187 回答
3

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

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

于 2008-11-26T12:28:21.087 回答
3

在 Eclipse 3.4 中做

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

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

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

于 2009-06-13T19:02:37.157 回答
3

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

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

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

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

于 2012-11-07T18:12:35.493 回答
3

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

unzip -p myjar.jar myfile.txt

这对我来说效果很好!

于 2019-03-05T11:27:31.507 回答
3

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

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

    assoc .jar=压缩文件夹

  • 当您使用它时,您也可以对 WAR 和 EAR 文件执行相同的操作:

    assoc .war=压缩文件夹

    assoc .ear=压缩文件夹

于 2020-03-10T21:56:21.513 回答
3

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

于 2019-11-15T15:48:32.417 回答
2

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

于 2008-11-26T16:44:02.927 回答
2

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

添加Eclipse 更新站点并仅安装查看器。

在此处输入图像描述

于 2015-02-19T14:06:55.530 回答
2

我认为 Java Decomplier 是您可以从这里下载的最佳选择:http: //jd.benow.ca/ 预习

于 2016-01-30T13:24:58.687 回答
1

Eclipse 3.4 JDT

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

于 2008-11-26T16:42:10.670 回答
1

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.

于 2008-12-21T23:29:52.300 回答
1

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

于 2008-11-26T15:14:10.863 回答
1

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

  • 如果未安装,请下载 winrar 或 7-zip 程序
  • 然后右键单击你的jar文件
  • 点击使用winrar或7-zip打开
于 2021-03-24T07:23:49.620 回答
0

我使用 JarExplorer 或JarVisualizer

于 2012-12-07T10:09:10.253 回答
0

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

于 2008-11-26T12:32:05.650 回答
0

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

于 2008-11-26T18:17:37.387 回答
0

在 Mac 上有Jarzilla

于 2011-03-21T00:30:38.743 回答
0

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

于 2018-04-18T01:52:10.743 回答
0

如果您甚至不知道您的 jar 路径在哪里,或者您的 JDK 路径在每个主机上都不同,那么大多数人都已经正确回答了这里是 linux 的一种解决方案

$(find / -type f -name "jar" 2>&1 |grep '/JDK' |head -1 ) tf FULLY_QUALIFIED_NAME_TO_YOUR_FILE
于 2021-05-05T21:16:06.400 回答