拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 查看JAR文件的内容

查看JAR文件的内容

白鹭 - 2021-11-24 444 0 0

1.概述

我们已经了解了如何从JAR文件获取类名。此外,在该教程中,我们讨论了如何在Java应用程序的JAR文件中获取类的名称。

在本教程中,我们将学习从命令行列出JAR文件内容的另一种方法。

我们还将看到几个GUI工具,用于查看JAR文件的更多详细内容,例如Java源代码。

2. JAR文件示例

在本教程中,我们仍然以[stripe-0.0.1-SNAPSHOT.jar](https://github.com/eugenp/tutorials/tree/master/stripe)文件为例,说明如何查看JAR文件中的内容:

查看JAR文件的内容

3.查看jar命令

我们已经了解到可以使用JDK附带的jar命令来检查JAR文件的内容:

$ jar tf stripe-0.0.1-SNAPSHOT.jar

 META-INF/

 META-INF/MANIFEST.MF

 ...

 templates/result.html

 templates/checkout.html

 application.properties

 com/baeldung/stripe/StripeApplication.class

 com/baeldung/stripe/ChargeRequest.class

 com/baeldung/stripe/StripeService.class

 com/baeldung/stripe/ChargeRequest$Currency.class

如果要过滤输出以仅获取所需的信息(例如,类名或属性文件),则可以将输出通过管道传递给过滤工具,例如grep

如果我们的系统安装了JDK,则使用jar命令非常方便。

但是,有时,我们希望在未安装JDK的系统上检查JAR文件的内容。在这种情况下, jar命令不可用。

接下来,我们来看一下。

4.使用unzip命令

JAR文件以ZIP文件格式打包。换句话说,如果某个实用程序可以读取一个ZIP文件,我们也可以使用它来查看一个JAR文件。

unzip命令是用于从Linux命令行处理ZIP文件的常用工具。

因此,我们可以使用unzip命令的-l选项来列出JAR文件的内容而无需将其提取:

$ unzip -l stripe-0.0.1-SNAPSHOT.jar

 Archive: stripe-0.0.1-SNAPSHOT.jar

 Length Date Time Name

 --------- ---------- ----- ----

 0 2020-10-16 20:53 META-INF/

 ...

 137 2020-10-16 20:53 static/index.html

 677 2020-10-16 20:53 templates/result.html

 1323 2020-10-16 20:53 templates/checkout.html

 37 2020-10-16 20:53 application.properties

 715 2020-10-16 20:53 com/baeldung/stripe/StripeApplication.class

 3375 2020-10-16 20:53 com/baeldung/stripe/ChargeRequest.class

 2033 2020-10-16 20:53 com/baeldung/stripe/StripeService.class

 1146 2020-10-16 20:53 com/baeldung/stripe/ChargeRequest$Currency.class

 2510 2020-10-16 20:53 com/baeldung/stripe/ChargeController.class

 1304 2020-10-16 20:53 com/baeldung/stripe/CheckoutController.class

 ...

 --------- -------

 15394 23 files

由于使用了unzip命令,我们可以在没有JDK的情况下查看JAR文件的内容。

上面的输出非常清楚。它以表格格式列出JAR文件中的文件。

5.使用GUI实用工具浏览JAR文件

jarunzip命令都很方便,但是它们仅列出JAR文件中的文件名。

有时,我们想了解有关JAR文件中文件的更多信息,例如,检查类的Java源代码。

在本节中,我们将介绍几个独立于平台的GUI工具,以帮助我们查看JAR文件中的文件。

5.1。使用JD-GUI

首先,让我们看一下JD-GUI

JD-GUI是一个不错的开源GUI实用工具,用于探索由Java反编译器JD-Core反编译的Java源代码。

JD-GUI附带了一个JAR文件。我们可以通过将java命令与-jar选项一起使用来启动该实用程序,例如:

$ java -jar jd-gui-1.6.6.jar

当我们看到JD-GUI的主窗口时,可以通过导航菜单“ File -> Open File… ”打开我们的JAR文件,也可以将JAR文件拖放到窗口中。

打开JAR文件后,JAR文件中的所有类将被反编译。

然后,我们可以在左侧选择感兴趣的文件以检查其源代码:

查看JAR文件的内容

正如我们在上面的演示中所看到的那样,在左侧的大纲中,也列出了类以及每个类的成员,例如方法和字段,就像我们在IDE中通常看到的那样

查找方法或字段非常方便,尤其是当我们需要检查带有许多代码行的某些类时。

当我们单击左侧的不同类别时,每个类别将在右侧的选项卡中打开。

如果需要在多个类之间进行切换,则制表符功能很有用。

5.2。使用Jar Explorer

Jar Explorer是另一个用于查看JAR文件内容的开源GUI工具。它附带一个jar文件和一个启动脚本“ Jar Explorer.sh ”。它还支持拖放功能,使打开JAR文件非常容易。

Jar Explorer提供的另一个不错的功能是它支持三种不同的Java反编译器:JD-Core, ProcyonFernflower

我们在检查源代码时可以在反编译器之间切换:

查看JAR文件的内容

Jar Explorer非常易于使用。反编译器切换功能也很好。但是,左侧的大纲在班级级别停止。

另外,由于Jar Explorer不提供标签功能,因此我们一次只能打开一个文件。

此外,每次我们在左侧选择一个类时,该类将被当前选定的反编译器反编译。

5.3。使用Luyten

Luyten是Java反编译器Procyon的一个不错的开源GUI实用工具,它为不同平台提供下载,例如.exe格式和JAR格式。

下载完JAR文件后,我们可以使用java -jar命令启动Luyten:

$ java -jar luyten-0.5.4.jar

我们可以将JAR文件拖放到Luyten中,并浏览JAR文件中的内容:

查看JAR文件的内容

使用Luyten,我们不能选择其他Java反编译器。但是,正如上面的演示所示,Luyten提供了多种反编译选项。另外,我们可以在标签中打开多个文件。

除此之外,Luyten支持一个不错的主题系统,我们可以在检查源代码时选择一个舒适的主题。

但是,Luyten仅在文件级别列出JAR文件的结构。

六,结论

在本文中,我们学习了如何从命令行列出JAR文件中的文件。稍后,我们已经看到了三个GUI实用程序来查看JAR文件的更多详细内容。

如果我们想反编译类并检查JAR文件的源代码,则选择GUI工具可能是最直接的方法。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *