0

So I am using this answer (the self attacher one) to get instrumentation and adding classfiletransformers

if (classfileBuffer == null || classfileBuffer.length == 0) {
        return new byte[0];
    }
    
    String cn = "";
    byte[] buffer = new byte[0];
    Class<?> redefineClass = null;
    ClassNode node = null;
    ClassReader reader = null;
    try {
        cn = className.replaceAll("/", ".");
        
        buffer = classfileBuffer;
        
        redefineClass = Class.forName(cn);
        
        ClassReader r = new ClassReader(classfileBuffer);
        node = new ClassNode();
        r.accept(node, 0);
        
        reader = r;
    } catch (Exception e) {
        System.out.println("Something terrible happened: ");
        e.printStackTrace();
    }
    
    return this.transform(cn, redefineClass, buffer, node, reader);

(class file transformer code)

this.transform:

ClassWriter cw = new ClassWriter(reader, 0);
classNode.accept(cw);
        
return cw.toByteArray();

(basically returning classfilebuffer) and I get this error :

Exception in thread "main" java.lang.LinkageError: loader (instance of  sun/misc/Launcher$AppClassLoader): attempted  duplicate class definition for name: "net/minecraft/client/main/Main"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at Main.main(Main.java:18)

any way I can fix this?

Better
  • 1
  • 1

0 Answers0