在 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
....
Run Code Online (Sandbox Code Playgroud)
但是在选择一个文件(例如 AbstractComponent.class)并按 Enter 后,在 vim 中我得到:
caution: filename not matched: 5751 01-14-2013 10:01 tigase/component/AbstractComponent.class
Run Code Online (Sandbox Code Playgroud)
并且文件打不开。
作为旁注,我还注意到,如果我提取 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...
....
Run Code Online (Sandbox Code Playgroud)
任何想法如何克服错误或格式问题?
然而,在选择一个文件(例如 AbstractComponent.class)并按 Enter 键后,在 vim 中我得到:
注意:文件名不匹配
这可能是 vim ZIP 插件中的一个已知错误 - 该插件无法正确处理包含 ZIP 注释的 ZIP 文件。请参阅例如此邮件列表帖子
作为旁注,我还注意到,如果我提取 jar(使用 unzip 或 jar)并使用 vim 打开提取的文件,内容格式错误
这是因为 JAR 中的大多数文件都是编译后的 Java 类文件(文件后缀.class)。这些是二进制数据,vim 并不真正适合编辑它们,因为 vim 是文本编辑器,而不是二进制编辑器。
您可以使用命令在 vim 中编辑它们xxd(请参阅vim 文档中的“使用 xxd” ),也可以使用十六进制编辑器,例如bvi。
无论如何,直接查看类文件的内容很少有帮助,因为您需要了解二进制类文件格式才能读取它们。
您能解释一下为什么要尝试打开 JAR 中的文件吗?那么也许我们可以提供帮助。