Я хочу использовать javassist (версия 3.19-GA) для генерации байт-кода статического инициализатора класса, который запускает поток. По какой-то причине я не могу понять, что джавассист ожидает «;» где-то, хотя я считаю, что код, который я предоставляю, синтаксически корректен. Кто-то видит больше, чем я? Вот код. В чем проблема?Ошибка синтаксиса при добавлении Runnable в статическом инициализаторе с javassist
ClassPool pool = ClassPool.getDefault();
final CtClass clazz = pool.get(somename);
clazz.makeClassInitializer().insertAfter(
"try{Runnable r=new Runnable() {public void run() { System.out.println (\"hello!!!!\"); }}; " +
"new Thread(r).start(); } catch(Exception e){}");
Я получаю следующее исключение:
javassist.CannotCompileException: [source error] ; is missing
at javassist.CtBehavior.insertAfter(CtBehavior.java:877)
at javassist.CtBehavior.insertAfter(CtBehavior.java:792)
at my.code(myclass.java:111)
Спасибо за любую подсказку.
Не помогает, к сожалению. Сообщение об ошибке одно и то же. Похоже, что конструкция с анонимным классом здесь невозможна. – kaidentity