Я работаю над проектом, который использует отражение, чтобы получить поля запущенного приложения Java.Java reflection question
Мне удалось получить поля, но я не могу их читать и писать. Это пример, который я нашел в Интернете:
Class aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);
Проблема заключается в том, что я использую классы от запущенного файла банки, а классы я пытаюсь манипулировать получаются из ClassLoader. Поэтому вместо «MyObject.class» у меня есть «.class». Чтобы получить «MyObject», я попытался использовать ClassLoader, но это не сработало.
Если я просто использовать».class':
Object value = field.get(theLoadedClass);
Я получаю эту ошибку:
java.lang.IllegalArgumentException: Can not set int field myClass.field to java.lang.Class
Спасибо.
Что вы подразумеваете под «работающим файлом jar»? Это на вашем пути к классу? – wjans