【发布时间】:2012-07-29 18:26:34
【问题描述】:
我想在运行时替换一些方法的内容。
我知道我可以为此使用 javassist,但它不起作用,因为我想增强的类已经由系统 classLoader 加载。
如何在运行时替换方法的内容?我应该尝试卸载课程吗?我怎样才能做到这一点 ?我看到这是可能的,但我不知道该怎么做。
如果可能,我想避免为此使用外部库,我想自己编写代码。
更多信息: - 我想增强的类包含在一个框架中(在一个 jar 文件中) - 我的代码实际上是这个框架的一个插件 - 我的插件运行的框架有它自己的classLoader,但是这个classLoader不加载它自己的类(它把它们委托给系统类加载器) - 我使用的框架是Play。
感谢您的帮助!
【问题讨论】:
-
玩!是开源的。您可以直接在源代码中更改方法并构建自己的 jar 来使用。
-
你能写一个你想改变的类的子类吗?
-
@Jeffrey 我可以,但我想为社区写一个“可用”的插件,所以我想避免修改源代码
-
@Code-Guru 不,我不能,这是一个静态类。所以它的方法是直接通过类调用的
标签: java playframework runtime classloader javassist