JAVA ASM:为什么修改会导致嵌套异常?

时间:2012-09-07 10:59:41

标签: java exception java-bytecode-asm

在我的项目中,我使用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;

我不知道为什么会出现这种错误。你能解释一下吗?或者可以提出一些建议我应该如何解决?任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

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