可以在我的程序中编辑已有的 .class 文件吗?

1 投票
3 回答
3567 浏览
提问于 2025-04-17 08:05

这听起来可能有点奇怪,但我解释起来会很费时间...

我需要的是一种方法,可以在用户按下一个按钮后,自动编辑一个已经存在的Java .class文件,这个文件是在一个JAR文件里面的。我希望这个操作可以通过命令提示符,或者在我的Python程序中完成。

我完全不知道该怎么做,也不确定这是否可能。

3 个回答

1

如果这个类已经被JVM的类加载器加载过了,你就会遇到一个问题,因为它可能不会重新读取这个.class文件,直到应用程序重新运行。

我知道有一个叫做BCEL的工具,但我没用过,所以不清楚它是否可以a) 在Python中使用,或者b) 在运行时使用。

补充一下:其实,Jeffrey的列表更好,因为它提供了一个更全面的字节码处理工具列表。

1

是的,你可以这样做。具体怎么做要看你想实现什么。如果你想处理一些跨越多个部分的问题,可以看看 AspectJ。使用AspectJ,你可以在类编译后添加你自己的代码。

8

一个jar文件其实就是一个压缩包,你只需要把它解压,修改里面的内容,然后再把它放回去。比较难的部分是如何编辑.class文件。Java的.class文件是一种二进制格式,有一些库可以帮助你处理这些文件

撰写回答