0

在我的项目中,我ASM用来更改方法签名。我选择使用 RMI 的方法并以这种方式更改它们:

从:

String f(int i, String s) {
    ...
}

String f(int i, String s, ThreadId t) {
    log(t)
    ...
    log(t)
}

并从

a.f(i,s);

a.f(i, s, t);

所以定义和调用都改变了。

令人惊讶的是,它在某些情况下有效,并ThreadId通过控制流传递。

但是一种方法导致:

java.rmi.ServerError: Error occurred in server thread; nested exception is:
            java.lang.AbstractMethodError: some.package.SomeClass.method(I;String;ThreadId;)String;

我不知道为什么会发生此错误。你能解释一下吗?或者也许给我一些建议我应该如何解决它?任何帮助都会很棒!

4

1 回答 1

1

方法是抽象的。您是否修改了抽象方法的方法签名(可以),然后尝试更改实现(它没有)?只需检查它是否是抽象的并跳过任何代码修改。

于 2012-09-07T11:14:39.573 回答