Я пытаюсь написать несколько байт-кода манипуляции в моем веб-приложение теперь, когда я пытаюсь внедрить свой код в мои методы, которые он всегда выдает мне ошибкуjavassist.CannotCompileException: [исходная ошибка]) отсутствует, что это такое?
javassist.CannotCompileException: [Ошибка источника]) отсутствует
Я не знаю, почему и что это такое ... Я немного искал Google, и некоторые люди говорят, что это ошибка с javassist версии 1.0, но я думаю, что это действительно нереально.
private void changeMethod(CtMethod method) throws NotFoundException,
CannotCompileException {
if (method.hasAnnotation(Loggable.class)) {
method.getName();
method.insertBefore("long startTime = 0;" +
"long startTime = System.currentTimeMillis();" +
" Thread thread1 = new Thread(new Runnable(){\n" +
" @Override\n" +
" public void run() {\n" +
" threadLogger.info(\"Testlog\");\n" +
"\n" +
" try {\n" +
" threadLogger.logCall(Webservice.this.getClass().getMethod(startThread0), \"Thread\");\n" +
" \n" +
" } catch (Exception e) {\n" +
" e.printStackTrace();\n" +
" }\n" +
"\n" +
" }\n" +
" });\n" +
" thread1.start();");
}
}
enter code here
hmm Это не проблема: s без манипуляции с байт-кодом работает код – alovaros
Вы можете распечатать строку, вставить в IDE и посмотреть, компилируется ли она. Это не должно быть так, как вы дважды определяете одну и ту же переменную. – toomasr
Jeah Я знаю, что вы имеете в виду, я исправил код, чтобы дважды определить одну и ту же переменную, и когда я запускаю этот код в своей среде IDE, он отлично работает – alovaros