Ich arbeite an einem Projekt, das Reflection verwendet, um die Felder einer laufenden Java-Anwendung zu erhalten.
Es ist mir gelungen, die Felder zu erhalten, aber ich kann sie nicht lesen oder beschreiben. Dies ist ein Beispiel, das ich im Internet gefunden habe:
Class aClass = MyObject.class
Field field = aClass.getField("someField");
MyObject objectInstance = new MyObject();
Object value = field.get(objectInstance);
field.set(objetInstance, value);
Das Problem ist, dass ich Klassen aus einer laufenden Jar-Datei verwenden, und die Klassen, die ich versuche, zu manipulieren sind aus dem classLoader erhalten. Anstelle von "MyObject.class" habe ich also nur die ".class". Um das "MyObject" zu erhalten, habe ich versucht, einen ClassLoader zu verwenden, aber das hat nicht funktioniert.
Wenn ich nur '.class' verwende:
Object value = field.get(theLoadedClass);
Ich erhalte diese Fehlermeldung:
java.lang.IllegalArgumentException: Can not set int field myClass.field to java.lang.Class
Gracias.