使用 `vim` 编辑 .jar

使用 `vim` 编辑 .jar

在 Amazon Linux 实例上,我试图通过 putty 远程编辑 jar 文件。vim提供了一个方便的导航器,它显示一个提示,其中包含 jar 中包含的文件的列表:

> vim filename.jar

" zip.vim version v22
" Browsing zipfile /home/ec2-user/tigase/libs/tigase-muc.jar
" Select a file with cursor and press ENTER

      453  01-14-2013 10:01   META-INF/MANIFEST.MF
      110  01-14-2013 10:01   META-INF/maven/tigase/tigase-muc/pom.properties
     4675  01-14-2013 10:01   META-INF/maven/tigase/tigase-muc/pom.xml
     5751  01-14-2013 10:01   tigase/component/AbstractComponent.class
     2337  01-14-2013 10:01   tigase/component/AbstractComponent$1.class
     ....

但是在选择一个文件(例如 AbstractComponent.class)并按 Enter 后,在 vim 中我得到:

caution: filename not matched:       5751  01-14-2013 10:01   tigase/component/AbstractComponent.class

并且文件没有打开。

附注一下,我还注意到,如果我提取 jar (使用unzipjar)并用 vim 打开提取的文件,则内容格式错误:

Êþº¾^@^@^@2^A^[^H^@     ^H^@
^H^@^K^H^@^U^H^@^V^H^@!^H^@#^H^@^^A^@) stanza already with type='...
^A^@^C()I^A^@^C()V^A^@^C()Z^A^@^F<init>^A^@^NDEFAULT_WRITER^A^@^WFE...
....

有什么想法可以解决错误或格式问题吗?

答案1

但是在选择一个文件(例如 AbstractComponent.class)并按 Enter 后,在 vim 中我得到:

警告:文件名不匹配

这可能是 vim 的 ZIP 插件中的一个已知错误 - 该插件无法正确处理包含 ZIP 注释的 ZIP 文件。参见例如此邮件列表帖子

附注:我还注意到,如果我提取 jar(使用 unzip 或 jar)并使用 vim 打开提取的文件,则内容格式错误

这是因为 JAR 中的大多数文件都是编译后的 Java 类文件(文件后缀为.class)。这些是二进制数据,vim 并不适合编辑它们,因为 vim 是一个文本编辑器,而不是二进制编辑器。

您可以使用命令在 vim 中编辑它们xxd(请参阅vim 文档),或者你可以使用十六进制编辑器,例如英属维尔京群岛

无论如何,直接查看类文件的内容很少有帮助,因为您需要了解二进制类文件格式才能读取它们。

您能解释一下为什么要尝试打开 JAR 内的文件吗?这样我们也许可以提供帮助。

答案2

这就是我解决格式问题的方法。

首先安装 emacs

 yum install emacs

然后使用下面的命令读取内容

emacs somejar.jar

选择内容并按Enter

要保存并退出编辑器,请按 Cx Cs(Ctrl+x,然后按 Ctrl+s)。

来源 : 如何在 Linux 中使用 Emacs 编辑器

相关内容