Wenn ich toBytecode() -Methode in meinem Zusammenhang nannte esJavassist: toBytecode() wirft Ausnahme java.lang.RuntimeException: remaper.by.moofMonkey.Main Klasse eingefroren, aber ihn nicht eingefroren ist
wirft java.lang.RuntimeException: remaper.by.moofMonkey.Main Klasse gefroren bei javassist.CtClassType.checkModify (CtClassType.java:515) bei javassist.CtClass.getClassFile (CtClass.java:524) bei com.moofMonkey. Main.writeFile (Main.java:340) bei com.moofMonkey.Main.saveClasses (Main.java:324) bei com.moofMonkey.Main.main (Main.java:309)
Mein Kontext:
.....
for (CtClass cl : modClasses) {
cl.stopPruning(true);
writeFile(cl, "./ModifiedClasses"); //cl.writeFile("./ModifiedClasses");
cl.stopPruning(false);
}
.....
public static void writeFile(CtClass cl, String directoryName) throws Throwable {
System.out.println(">> " + cl.getName());
byte[] bc = cl.toBytecode();
String s = cl.getClassFile().getSourceFile();
int index = new String(bc).indexOf(s);
for(int i = 0; i < s.length(); i++) //KILL SOURCEFILE (c) moofMonkey
bc[index + i] = '-';
DataOutputStream out = cl.makeFileOutput(directoryName);
out.write(bc);
out.flush();
out.close();
}
aber ... aber. Wenn ich analog von writeFile() - cl.writeFile() aufrufe - alles funktioniert!
Ich kann dies tun:
1. Save File
2. Read bytes from him
3. Dp what I need
4. Save File
Q Gelöst. Besonderer Dank für @SubOptimal – moofMonkey