Instrumentación Java para la clase URI: agregar una dependencia arroja ClassNotFoundException

Dec 12 2020

He instrumentado un constructor de URI para escribir el URI creado en un cargador de registros. La clase Logshipper es parte de mi biblioteca de agentes, que es tanto una dependencia maven como un Arg en tiempo de ejecución.

La instrumentación dentro del agente usa un ClassFileTransformer para agregar la línea de código a ese constructor. Sin embargo, cuando se llama al constructor, lanza una ClassNotFoundException con detailMessage: edu / overbeck / masterarbeit / agent / LogShipper. Sin embargo, cuando miro en ClassLoader, la clase está cargada. Una captura de pantalla de mi depurador IntelliJ:! [Error extraño] [1]

¿Por qué pasó esto? Mi otra clase instrumentada, ContentLengthOutputStream de la biblioteca Apache HTTP-core, funciona bien con LogShipper. [1]:https://i.stack.imgur.com/vf8b4.png

Respuestas

PeerOverbeck Dec 13 2020 at 05:34

Fue un problema del cargador de clases, respondido y explicado bien aquí: Java NoClassDefFoundError al llamar a la propia clase desde el método instrumentado Agregar mi AgentLib que contiene la clase LogShipper como XBootclasspath ayudó.