Hello, I had a problem with a new statement without DUP in the bytecode (code like this : void method { new Object(); } has no dup statement because the result isn't stored )
So I had the following error : javassist.CannotCompileException: sorry, cannot edit NEW followed by no DUP and I corrected it by changing the folowwing lines in NewExpr.java: private int canReplace() throws CannotCompileException { int op = iterator.byteAt(newPos + 3); if (op == Opcode.DUP) return 4; else if (op == Opcode.DUP_X1 && iterator.byteAt(newPos + 4) == Opcode.SWAP) return 5; else if (op == Opcode.INVOKESPECIAL) return 3; // for Eclipse's compiler else throw new CannotCompileException( "sorry, cannot edit NEW followed by no DUP"); } by private int canReplace() throws CannotCompileException { int op = iterator.byteAt(newPos + 3); if (op == Opcode.DUP) return 4; else if (op == Opcode.DUP_X1 && iterator.byteAt(newPos + 4) == Opcode.SWAP) return 5; else if (op == Opcode.INVOKESPECIAL) return 3; // for Eclipse's compiler else return 3; } (just the last else changed) I don't know if this will always work correctly but in my case, it does (I'm instrumenting jetty, a java server with javassist). View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4065036#4065036 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4065036 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user