Il faut réellement que je sache comment sa marche.
Je n'arrive pas redéfinir une classe.
voila la doc :
http://java.sun.com/javase/6/docs/ap...Definition...)
j'ai essayé plein de trucs mais sa fonctionne pas.
je n'arrive pas redéfinir une classe pourtant j'ai pris pas mal de précautions.
voila un début de code pour que vous puissiez tester (pour les plus courageux)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
public class SimpleTransformer2 implements ClassFileTransformer {
Instrumentation instrum;
public static void premain(String agentArguments, Instrumentation instrumentation) {
instrumentation.addTransformer(new SimpleTransformer2(instrumentation),true);
}
public SimpleTransformer2(Instrumentation instrum) {
try{
Class[] cl = instrum.getAllLoadedClasses();
Vector v = new Vector();
instrum.isRetransformClassesSupported(); // = true
for(int a=0;a<cl.length;a++){
if(cl[a]!= null && instrum.isModifiableClass(cl[a])
&& !cl[a].getName().equals("Class")){
v.add(cl[a]);
}else{
System.out.println("PAS MODIFIABLE :"+cl[a].getName());
}
}
//je fais la transformation
java.util.Iterator it = v.iterator();
while(it.hasNext()){
Class c = (Class)it.next();
//[... le code pour redefineClass doit probablement venir ici mais je ne sais vraiment pas comment faire ...]
}
System.out.println("---------------------------------------");
}catch(Exception e){
e.printStackTrace();
}
}
public byte[] transform(ClassLoader loader, String className, Class redefiningClass, ProtectionDomain domain, byte[] bytes) throws IllegalClassFormatException {
System.out.println("--->Transform: " + className);
[...]
return bytes;
} |
1 2 3 4 5
|
Manifest-Version: 1.0
Premain-Class: SimpleTransformer2
Can-Retransform-Classes: true
Can-Redefine-Classes: true |
java -javaagent:test.jar ClassTest
Partager