java—对jar中的类文件进行少量编辑

9vw9lbht  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(324)

我有一个用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编辑有什么问题,或者对这个应用程序做一些小改动,我们将不胜感激。我有点疯了。

lsmd5eda

lsmd5eda1#

您应该使用十六进制编辑器(如果您使用的是linux, hexedit 应在命令行中可用)来编辑二进制文件。文本编辑器通常向内容中添加内容或转换字符。
哦,如果你想做更复杂的改变jbe是很酷的。

相关问题