Instrumentasi Java untuk kelas URI: Menambahkan dependensi akan memunculkan ClassNotFoundException
Saya telah menginstrumentasi Konstruktor URI untuk menulis URI yang dibuat ke perusahaan kapal. Class Logshipper adalah bagian dari Agent Library saya yang merupakan dependensi maven dan runtime Arg.
Instrumentasi di dalam Agen menggunakan ClassFileTransformer untuk menambahkan baris kode ke konstruktor tersebut. Namun, saat dipanggil, konstruktor akan melontarkan ClassNotFoundException dengan detailMessage: edu / overbeck / masterarbeit / agent / LogShipper. Ketika saya melihat di ClassLoader, Kelas akan dimuat. Tangkapan layar dari debugger IntelliJ saya:! [Weird err] [1]
Mengapa ini terjadi? Kelas berinstrumen saya yang lain, ContentLengthOutputStream dari pustaka inti HTTP Apache, berfungsi dengan baik dengan LogShipper. [1]:https://i.stack.imgur.com/vf8b4.png
Jawaban
Itu adalah masalah pemuat kelas - dijawab dan dijelaskan dengan baik di sini: Java NoClassDefFoundError saat memanggil kelas sendiri dari metode berinstrumen Menambahkan AgentLib saya yang berisi kelas LogShipper saat XBootclasspath membantu.