Java NoClassDefFoundError al llamar a la propia clase desde un método instrumentado

Estoy trabajando en un kit de agentes Java simples para ayudarme (y espero que otros) solucionen problemas de aplicaciones Java. Uno de los agentes con los que me gustaría crear instrumentos es el método JComponent.getToolTipText () para identificar rápidamente cualquier clase de GUI simplemente pasando el cursor del mouse sobre ella.

Puede encontrar el código de mi transformador y el resto del proyecto aquí:

http://sfn.cvs.sourceforge.net/viewvc/sfn/core/src/main/java/org/leplus/sfn/transformer/JComponentTransformer.java?view=markup

Lanzo mi GUI de prueba con el agente adjunto de la siguiente manera:

$ java -javaagent:target/jars/sfn-0.1-agent.jar=JComponent -cp lib/jars/bcel-5.2.jar:target/jars/sfn-0.1-test.jar:target/jars/sfn-0.1-agent.jar org.leplus.sfn.test.Main

sfn-0.1-agent.jar contiene la clase org.leplus.sfn.transformer.JComponentTransformer. sfn-0.1-test.jar contiene la clase org.leplus.sfn.test.Main.

Esto es lo que imprime la aplicación cuando la ejecuto y pongo el mouse sobre ella:

Loading agent: JComponent
Instrumentation ready!
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/leplus/sfn/tracer/ComponentTracer
 at javax.swing.JComponent.getToolTipText(JComponent.java)
 at javax.swing.ToolTipManager$insideTimerAction.actionPerformed(ToolTipManager.java:662)
...

Lo que me sorprende es que si cambio mi transformador para llamar a cualquier clase desde el JRE, funciona. Pero no funciona cuando llamo a mi propia clase org.leplus.sfn.tracer.ComponentTracer. Mi primera suposición fue un problema de classpath, pero ComponentTracer está en classpath y en el jar del agente. Entonces estoy perdido.

Si alguno de ustedes ve donde me falta algo.

Salud,

Tom

Respuestas a la pregunta(2)

Su respuesta a la pregunta