我有一个用java构建的定制遗留应用程序,我需要对其进行非常小的编辑。我需要在一个类文件中将对“yyyy”的引用更改为对“yyyy”的引用。
我发现vim可以编辑jars中的类文件,这似乎是最简单的解决方案,因此使用它可以使编辑成为jar的副本。但是,在尝试运行新的jar时,我遇到了我编辑的类的异常:
"Exception in thread "main" java.lang.ClassFormatError: Extra bytes at the end of class"
从文件大小来看,看起来即使我所做的只是在一行上将'yyyy'改为'yyyy',文件还是比原来的大52字节。我认为vim在保存时添加了额外的字符。在保存之前,我尝试了“set nofixendol”、“set binary noeol”、“set binary noendofline”,因为我看到有人提到vim添加endofline,但没用。
在一个庞大的自定义代码包中,这是一个如此微小的变化,但我似乎无法真正做出改变。
以前试图从源代码或反编译jar进行编译,但总是由于依赖性问题而失败,不知道最初是如何编译的。在编译时尝试包含原始jar,但仍然无法工作。这就是为什么当我发现 vim 可以编辑它时我充满希望。
如果您对vim编辑有什么问题,或者对这个应用程序做一些小改动,我们将不胜感激。我有点疯了。
1条答案
按热度按时间lsmd5eda1#
您应该使用十六进制编辑器(如果您使用的是linux,
hexedit
应在命令行中可用)来编辑二进制文件。文本编辑器通常向内容中添加内容或转换字符。哦,如果你想做更复杂的改变jbe是很酷的。