查看.jar文件的内容

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

461928 次浏览

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

现在,在SO的某个地方提到了一些Eclipse插件,为了找到一个类位于哪个jar文件中,也许它们可以做更多的事情(例如。你所要求的)。

[编辑]参考SO线程。不是被问到的问题,但以某种方式相关,因此有用:Java:我如何知道哪个jar文件使用给定的类名?

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

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

嗯,jar文件就是一个压缩文件,所以如果您解压缩它(使用您最喜欢的解压缩实用程序),就可以得到里面的所有文件。

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

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

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

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

杰德是笨拙的,不再维持。我已经切换到“Java编译器”,它有一个光滑的UI,并支持新的语言功能。

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

Eclipse 3.4 JDT

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

你可以用现在大多数的解压工具打开它们,然后如果你想查看源代码,只需要得到类似DJ Java反编译器的东西。

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

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

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

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

方法名、字段等。

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

只看内容

对于任何事情,比如查看内容,你可以使用:

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

源代码

要访问源代码,您可以使用一个反编译器,如JAD或它的一个前端或另一个反编译器。如果代码被混淆了,那么…

在Eclipse 3.4中

  1. 将jar文件拖到Java项目中。将出现jar文件的副本。
  2. 右键单击jar文件,并选择“构建路径”->“添加到构建路径”。
  3. Jar文件被移动到“引用库”节点,可以在项目资源管理器窗格中打开和导航。

如果看到源代码也是一个问题,那就打开一个新的问题。

对于jar文件级别的导航(作为一个zip文件),我使用7zip,它工作得非常好,并且允许查看和编辑条目,这对于解决问题非常有用。

在Mac上有Jarzilla

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

JD-GUI的网站:http://jd.benow.ca/

如果你在windows和使用powershell,你正在寻找一个文件在一个jar,你可以这样做:

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

一种方法是在“Package explorer”中打开透视图。这样做,您可以看到带有类详细信息的jar的结构。为此,使用包资源管理器检查项目中的库文件夹。

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

另一种方法是,您可以将JarPlug作为eclipse插件使用。这在eclipse/springsource中工作

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

我使用JarExplorer或JarVisualizer

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

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

enter image description here

扩展Tom Hawtin的回答,你可以通过管道过滤出所需的类或文件:

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

这应该适用于bash/zsh和类似文件,或emacs的shell。

附加信息:https://docs.oracle.com/javase/tutorial/deployment/jar/view.html

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

  1. F2 & Rename to jarfile.zip //使用任何拉链…

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar

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

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

因此,我使用unzip命令,这是容易记住和使用。

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

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

虽然所有其他答案都很好,但在大多数情况下,你必须使用一些软件,如__ABC0或JDK或其他eclipse工具,而这并不需要你有任何这些大s/w,它是默认的linux和mac,所以它非常轻量级和方便使用

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

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

jar -tvf file_name.jar

上面只会打印文件名

要查看文件的内容,可以通过以下方法解压缩文件夹中的文件:

jar -xvf file_name.jar

这将解压jar文件&将内容放在运行该程序的同一目录中。

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

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

unzip -p myjar.jar myfile.txt

这对我来说很有效!

这个Jar探险家已经足够好了。
支持三种反编译器类型:JD, Procyon和Fernflower.
允许在任何java存档中搜索文件和副本 用户还可以通过D&D文件修改jar,并编辑一些非类文件。 enter image description here enter image description here < / p >

你可以通过以下方法在Windows资源管理器中查看类似ZIP文件的JAR文件:

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

    assoc . jar = CompressedFolder < / p >

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

    assoc . war = CompressedFolder

    assoc . ear = CompressedFolder < / p >

查看jar文件中的类、方法、属性等最简单的方法是使用'解压缩的软件'和'7 - zip'这样的程序。

  • 如果没有安装,请下载winrar或7-zip程序
  • 然后右击jar文件
  • 用winrar或7-zip点击打开

大多数人都正确地回答了这个问题,如果你甚至不知道你的jar路径在哪里,或者你的JDK路径在每台主机上都不一样,这里有一个linux解决方案

$(find / -type f -name "jar" 2>&1 |grep '/JDK' |head -1 ) tf FULLY_QUALIFIED_NAME_TO_YOUR_FILE