对JAR中的类文件的次要编辑



我有一个用Java构建的自定义遗留应用程序,我需要对其进行非常小的编辑。我需要在一个类文件中将对"YYYY"周年份的引用更改为"YYYY"日年份。

我发现vim可以编辑JAR中的类文件,这似乎是最简单的解决方案,因此使用它可以使编辑成为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添加endoflines,但这并没有帮助。

这是一个巨大的自定义代码包中的一个微小更改,但我似乎无法真正做出更改。

以前曾尝试从源代码或反编译JAR,但由于依赖性问题总是失败,不知道它最初是如何编译的。在编译时尝试包含原始JAR,但仍然没有成功。这就是为什么当我发现vim可以编辑它时,我充满希望

任何关于vim编辑或其他对该应用程序进行微小更改的方法出现问题的想法都将不胜感激。我在这里有点失去理智。

您应该使用十六进制编辑器(如果您使用Linux,hexedit应该在命令行中可用(来编辑二进制文件。文本编辑器通常会在内容中添加一些内容或转换字符。

哦,如果你想做更复杂的更改,JBE非常酷。

最新更新