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文件中的内容:
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文件
jar
和unzip
命令都很方便,但是它们仅列出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文件中的所有类将被反编译。
然后,我们可以在左侧选择感兴趣的文件以检查其源代码:
正如我们在上面的演示中所看到的那样,在左侧的大纲中,也列出了类以及每个类的成员,例如方法和字段,就像我们在IDE中通常看到的那样。
查找方法或字段非常方便,尤其是当我们需要检查带有许多代码行的某些类时。
当我们单击左侧的不同类别时,每个类别将在右侧的选项卡中打开。
如果需要在多个类之间进行切换,则制表符功能很有用。
5.2。使用Jar Explorer
Jar Explorer是另一个用于查看JAR文件内容的开源GUI工具。它附带一个jar
文件和一个启动脚本“ Jar Explorer.sh
”。它还支持拖放功能,使打开JAR文件非常容易。
Jar Explorer提供的另一个不错的功能是它支持三种不同的Java反编译器:JD-Core, Procyon和Fernflower 。
我们在检查源代码时可以在反编译器之间切换:
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文件中的内容:
使用Luyten,我们不能选择其他Java反编译器。但是,正如上面的演示所示,Luyten提供了多种反编译选项。另外,我们可以在标签中打开多个文件。
除此之外,Luyten支持一个不错的主题系统,我们可以在检查源代码时选择一个舒适的主题。
但是,Luyten仅在文件级别列出JAR文件的结构。
六,结论
在本文中,我们学习了如何从命令行列出JAR文件中的文件。稍后,我们已经看到了三个GUI实用程序来查看JAR文件的更多详细内容。
如果我们想反编译类并检查JAR文件的源代码,则选择GUI工具可能是最直接的方法。
0 评论