Ich versuche, Systemklassen benutzerdefiniertes Verhalten hinzuzufügen (FileInputStream / FileOutputStream). Ich schrieb benutzerdefinierten ClassFileTransformer mit der folgenden Transformationsmethode:
%Vor%Wenn ich ein Beispielprogramm starte:
%Vor%Ich sehe, dass keine Systemklassen zur Transformation übergeben werden.
Gibt es eine Möglichkeit, Systemklassen zu ändern? Vielen Dank im Voraus!
Einige (nicht alle) Systemklassen sind bereits geladen, bevor die pre-main-Methode aufgerufen und Ihr ClassFileTransformer hinzugefügt wird. Wenn Sie diese Klassen ebenfalls transformieren möchten, können Sie nach dem Hinzufügen Ihres ClassFileTransformers etwas wie Instrumentation # retransformClasses (Instrumentation # getAllLoadedClasses ()) aufrufen. Beachten Sie, dass Sie Instrumentation # addTransformer (ClassFileTransformer, true) verwenden müssen, um anzugeben, dass Ihr Transformer die Rücktransformation von Klassen unterstützt.
Tags und Links java instrumentation