ASM ошибка

Статус
В этой теме нельзя размещать новые ответы.
1,137
5
3
Код:
ClassReader cr = new ClassReader(bytecode);
ClassNode classNode = new ClassNode();
cr.accept(classNode, 0);
if (classNode.visibleAnnotations != null) {
    for (AnnotationNode annotation : classNode.visibleAnnotations) {
        if (annotation.desc.equals("Lcom/Test;")) {
            System.out.println(classNode);
            break;
        }
    }
}
Должно проверить на наличие аннотации в классе, но выкидывает ClassCircularityError
ЧЯДНТ?
 
52
0
Ну проблема уж точно не в этом методе. У тебя есть еще коремоды, которые юзают трансформеры?
 
52
0
Ставь пчелку и выводи имя класса. Для начала хоть узнай, на каком классе вылетает ошибка.
 
1,137
5
3
Код:
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.NoClassDefFoundError: com/google/gson/annotations/SerializedName
Caused by: java.lang.ClassNotFoundException: com.google.gson.annotations.SerializedName
Caused by: java.lang.ClassCircularityError: com/Test
 
52
0
Зачем тебе вообще проходить по всем классам?
Если тебе нужно проверить в определенном - то сделай проверку на него.

Если по всем классам из мода, то проверь по началу пути.

Если по всем классам из майна - так же само.
 
52
0
wilah написал(а):
Исключить как?Проверив по имени?

Да. У тебя классНейм в аргументах, а имена библиотек не обфусцируется.

Код:
if(className.startWith("com.google") return;

Так сразу сказать, почему выдает ошибку - сложно. Нужно пробовать.
 
1,137
5
3
Попробуй у себя мой код, может у меня что-то не то с либами.
 
52
0
У меня твой код работает нормально. Потому и говорю, мб у тебя другие трансформеры что-то делают.
 
1,137
5
3
Ого, мой код работает)
Стоит у меня ещё Hook lib, ибо она мне нужна, т.к. знания асм не очень.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху