Ich versuche, Systemklassen benutzerdefiniertes Verhalten hinzuzufügen (FileInputStream/FileOutputStream). Ich schrieb benutzerdefinierte ClassFileTransformer mit dem Verfahren folgende Transformation:Wie Java-Systemklassen instrumentieren?
public byte[] transform(ClassLoader arg0, String arg1, Class arg2, ProtectionDomain arg3, byte[] arg4) throws IllegalClassFormatException {
System.out.println("class name: " + arg1);
return arg4;
}
Wenn ich laufen Beispielprogramm:
public static void main(String[] args) throws Exception {
new FileOutputStream("file");
}
Ich sehe, dass keine Systemklassen sind nicht zu verwandeln weitergegeben.
Gibt es eine Möglichkeit, Systemklassen zu ändern? Danke im Voraus!
Ich hätte erwartet, dass Systemklassen übergeben werden, da viele Tools wie Profiler auf dieses Verhalten angewiesen sind. –
Mehrere ClassFileTransformers können hinzugefügt werden, um Probleme mit vielen Tools zu vermeiden. Auch gibt es Standart/Richtlinie/Empfehlungen, wie Klassen umgewandelt werden – dernasherbrezon