Instrumentación Java para la clase URI: agregar una dependencia arroja ClassNotFoundException
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
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ó.