正如我在标题中提到的,我尝试使用 btrace 来跟踪一个 restful api 的执行并得到这个错误:"Handler dispatch failed; nested exception is java.lang.NoSuchFieldError: runtime"
当我调用 restful api 时。在我开始 btrace 进程之前,这个 restful api 运行良好,一旦我启动btrace 过程,这个宁静的 api 每次调用这个 api 时都会抛出错误。
一些信息:
sping version:4.3.9.RELEASE
btrace version:1.3.12-SNAPSHOT
tomcat version:8.5.34
Restful API(java代码):
@Controller
@RequestMapping("/user")
public class UserInfoController {
@RequestMapping(value = "/greetting/{name}", method = RequestMethod.GET)
@ResponseBody
public WebResponse<String> greet(@PathVariable(value = "name") String name) {
int a = 1;
return WebResponseUtil.onSuccess("hello " + name);
}
}
btrace 测试类代码:
@BTrace
public class BtraceTest {
// //获取耗时与方法名
// @O`enter code here`nMethod(clazz = "com.zrr.controller.UserInfoController", method = "greet", location = @Location(Kind.RETURN))
// public static void getFuncRunTime(@ProbeMethodName String pmn, @Duration long duration) {
// println("接口 " + pmn + strcat("的执行时间(ms)为: ", str(duration / 1000000))); //单位是纳秒,要转为毫秒
// }
@OnMethod(
clazz = "com.meituan.zrr.controller.UserInfoController",
method = "greet",
location = @Location(Kind.ENTRY)
)
public static void getFuncEntry(@ProbeClassName String pcn, @ProbeMethodName String pmn, String name) {
println("类名: " + pcn);
println("方法名: " + pmn);
BTraceUtils.print("入参userName为: ");
BTraceUtils.printFields(name);
}
}
我想知道这是否与 btrace 版本有关?希望有人能救我,谢谢!