有什么办法可以做到以下几点。所以我有一个project.jar 文件,在其中我需要修改传递给classA.class 的某些方法的字符串。例如,假设这个 classA.class 有一个名为
change(String a, String b)
我想要的就是执行以下操作作为该方法内代码的第一行,如下所示:
a = a + "hi";
我想直接修改 .class 文件,而不需要再次重新编译所有内容。然后我会用新的类文件更新 jar 文件。是否可以?如果是的话有人可以举个例子吗?预先非常感谢!
是的,使用字节码编辑器是可能的。通常你可以使用aspectj http://www.eclipse.org/aspectj/与编译时编织一起修改类文件。您还可以使用诸如BCEL http://commons.apache.org/bcel/manual.html, cglib http://cglib.sourceforge.net/ etc.
但是,对于您描述的用例,您通常不需要编辑类文件。你可以将你的对象包裹在一个proxy http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html或使用修改其行为AoP http://en.wikipedia.org/wiki/Aspect-oriented_programming编程风格(例如,aspectj
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)