Java - is bytebuddy agent capable of "Fully" redefine a class?

412 views Asked by At

Is byte-buddy agent capable of overcoming Attach API restrictions e.g. "new method definition", "static variable changes" ? I can see that redefineClasses method is being called from Agent Builder, but not sure if this is also following the same restrictions as the attach API.

I am trying to understand whether I can do the following:

1) Load the agent jar using an application class loader e.g. ParallelWebappClassLoader. My application is a servlet webapp and during runtime it uses the above classloader to load all application classes.

2) Fully redefine my classes i.e. any method addition/updates and static/local variable changes/updates/addition.

I do have an agent which currently works within the Attach API restrictions, but I am struggling to delegate the class loading from System Class Loader to application.

Many Thanks,

1

There are 1 answers

0
Rafael Winterhalter On

This is a restriction of the Java virtual machine you are running. Byte Buddy is capable of "fully redefining" a class by using its API but most VMs will reject such changes. Have a look at the dynamic code evolution VM for being able to apply such changes.