Instrumentasi Java untuk kelas URI: Menambahkan dependensi akan memunculkan ClassNotFoundException

Dec 12 2020

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

PeerOverbeck Dec 13 2020 at 05:34

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.