Я получил ошибку («Ошибка отправки обработчика; вложенное исключение - java.lang.NoSuchFieldError: runtime»), когда я попытался отследить весенний проект с помощью btrace - PullRequest
0 голосов
/ 11 марта 2019

Как я уже упоминал в заголовке, я попытался использовать btrace для отслеживания выполнения успокоительного API и получил эту ошибку: "Handler dispatch failed; nested exception is java.lang.NoSuchFieldError: runtime", когда я вызывал успокоительный API. И перед тем, как запустить процесс btrace, этот успокаивающий 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? Надеюсь, что кто-то может спасти меня, СПАСИБО!

1 Ответ

0 голосов
/ 09 апреля 2019

Проблема возникла из-за того, что я поместил java-файлы btrace и java-файлы тестового контроллера в один и тот же проект.После того, как я поместил их в два разных проекта и удалил зависимость btrace из тестового проекта, проблема решена.

...