Я использую 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
Проблема создания динамического класса Javassist ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1719936890
Anonymous
Я использую [b]Java 17[/b] и [b]Spring Boot Starter 3.2.2[/b].
Я пытался использовать [b]Javassist 3.22.0-GA[/b] > чтобы я мог создавать динамические классы.
Был протестирован простой код, в котором был создан ctClass, в ctClass добавлено одно поле типа string и добавлен конструктор по умолчанию.
Но ctClass.toClass( ) всегда выдает java.lang.NullPointerException [b]невозможно вызвать java.lang.reflect.field.setaccessible(boolean), поскольку ao имеет значение null[/b]. Связано ли это с версией 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());
Подробнее здесь: [url]https://stackoverflow.com/questions/78697997/javassist-dynamic-class-creation-issue[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия