ByteBuddy: 1.10.1
JDK: 1.8
Hi,
I'm having an issue trying to transform some Tomcat classes using a JavaAgent because I'm using a Class
object to define the AgentBuilder
, but the class is not loaded by SystemClassLoader
, but another one which is Tomcat specific.
Is there any way to define the AgentBuilder type(isSubTypeOf(....))
method without using a Class
which applies to all classloaders? I saw that there is a method which accept a TypeDefinition
, but I've not found the way to use it.
i.e.
new AgentBuilder.Default()
.ignore(none())
.with(AgentBuilder.InitializationStrategy.NoOp.INSTANCE)
.with(AgentBuilder.TypeStrategy.Default.REDEFINE)
.with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)
.type(isSubTypeOf(<----- Here I need something that it is not a loaded class ------- >)).transform(...))
)
something like
.type(isSubTypeOf(named("foo.bar.SomeClass"))....
Use hasSuperType(named("foo.bar.SomeClass"))
.
If you know that the type is a class and not an interface, you can also use the more performant hasSuperClass
.