Проблема создания динамического класса JavassistJAVA

Программисты JAVA общаются здесь
Anonymous
Проблема создания динамического класса Javassist

Сообщение Anonymous »

Я использую Java 17 и Spring Boot Starter 3.2.2.
Я пытался использовать Javassist 3.22.0-GA > чтобы я мог создавать динамические классы.
Был протестирован простой код, в котором был создан ctClass, в ctClass добавлено одно поле типа string и добавлен конструктор по умолчанию.
Но ctClass.toClass( ) всегда выдает java.lang.NullPointerException невозможно вызвать java.lang.reflect.field.setaccessible(boolean), поскольку ao имеет значение null. Связано ли это с версией Javassist? Может кто-нибудь помочь, как решить эту проблему и динамически создать простой класс с помощью Javassist?
CtClass ctClass = pool.makeClass(className);

// Create the field
CtField ctField = new CtField(pool.get("java.lang.String"), fieldName, ctClass);
ctField.setModifiers(Modifier.PRIVATE);
ctClass.addField(ctField);

// Add default constructor
CtConstructor defaultConstructor = new CtConstructor(new CtClass[]{}, ctClass);
defaultConstructor.setBody("{ this." + fieldName + " = null; }");
ctClass.addConstructor(defaultConstructor);

// Convert CtClass to Java Class
return ctClass.toClass(this.class.getClassLoader(), this.class.getProtectionDomain());


Подробнее здесь: https://stackoverflow.com/questions/786 ... tion-issue

Вернуться в «JAVA»