在 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 (使用unzip
或jar
)并用 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)。