Kur*_*rru 6 gnome-terminal zip
如何从终端中打开和查看 jar 文件中的文件?
我可以使用 less 打印出 jar 文件中的所有文件,但是如何打开这些文件?
我个人使用,jar因为它感觉更自然,并且还允许其他操作,例如更新内容。下面是读取命令:
列表内容
jar tf myjar.jar
提取内容到密码
jar xf myjar.jar
提取特定文件,根据需要创建目录
jar xf myjar.jar /foo/bar.class
不过,提取字节码本身通常不是很有用。为了理解它,你需要将它反编译成可读的东西。
没有很多好的 Java 反编译器可供选择。我倾向于使用JD-GUI,因为它很快并且可以满足我的需要。令人沮丧的是,它的多文件搜索功能从来不适合我(注意 Ctrl+F 搜索页面很好)。不过,这并不是什么大损失;您可以使用 Ctrl+Alt+S 将所有源转储到磁盘,以便使用 grep/vim/Eclipse 等进行细读。
我是这样安装的:
wget http://jd.benow.ca/jd-gui/downloads/jd-gui-0.3.5.linux.i686.tar.gz
tar xzf jd-gui-0.3.5.linux.i686.tar.gz
sudo mv jd-gui /usr/local/bin/
sudo chown root:root /usr/local/bin/jd-gui
sudo chmod 755 /usr/local/bin/jd-gui
Run Code Online (Sandbox Code Playgroud)
使用它是这样的:
jd-gui myjar.jar
Ctrl+Alt+S; pick your path & save
Alt+F4
jar xf <path>/myjar.src.zip
Run Code Online (Sandbox Code Playgroud)
但是请注意,JD-GUI 没有 CLI 界面。如果你知道一个好的 CLI 反编译器,我会很感兴趣听到它(有 JAD,但 AFAIK 只支持 Java < 1.5)。
使用 unzip,您可以将文件从存档传输到 stdout,然后传输到其他内容来读取它,例如:
unzip -p /path/to/some.jar path/to/file/inside/jar | less
Run Code Online (Sandbox Code Playgroud)
默认情况下不会安装从内存中解压缩,因此您可能需要:
sudo apt-get install unzip
Run Code Online (Sandbox Code Playgroud)
杰夫
jar 文件实际上只是 zip 文件,您可以通过这样做来测试它。
file foo.jar
Run Code Online (Sandbox Code Playgroud)
因此列出您可以简单执行的文件。
unzip -l foo.jar
Run Code Online (Sandbox Code Playgroud)
要访问这些文件,只需使用以下命令解压缩文件即可
unzip foo.jar
Run Code Online (Sandbox Code Playgroud)
如果您只想提取一个文件,则将文件附加到后面
unzip foo.jar some/path/in/jar/bar.class
Run Code Online (Sandbox Code Playgroud)
确保使用 -l 中的完整路径。请记住,它将在本地创建相同的路径。