在我的项目中,我使用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;
我不知道为什么会出现这种错误。你能解释一下吗?或者可以提出一些建议我应该如何解决?任何帮助都会很棒!
答案 0 :(得分:1)
该方法是抽象的。您是否修改了抽象方法的方法签名(可以),然后尝试更改实现(它没有)?只需检查它是否是抽象的并跳过任何代码修改。