Instrumentacja Java dla klasy URI: dodanie zależności powoduje zgłoszenie wyjątku ClassNotFoundException

Dec 12 2020

Oprzyrządowałem Konstruktor URI, aby zapisać utworzony identyfikator URI do logshippera. Klasa Logshipper jest częścią mojej biblioteki agentów, która jest zarówno zależnością maven, jak i argumentem wykonawczym.

Instrumentacja wewnątrz agenta używa ClassFileTransformer, aby dodać wiersz kodu do tego konstruktora. Jednak po wywołaniu konstruktora zgłasza wyjątek ClassNotFoundException z detailMessage: edu / overbeck / masterarbeit / agent / LogShipper. Kiedy patrzę na ClassLoader, klasa jest jednak załadowana. Zrzut ekranu mojego debuggera IntelliJ:! [Dziwny błąd] [1]

Dlaczego to się dzieje? Moja druga klasa instrumentalna, ContentLengthOutputStream z biblioteki Apache HTTP-core, działa dobrze z LogShipper. [1]:https://i.stack.imgur.com/vf8b4.png

Odpowiedzi

PeerOverbeck Dec 13 2020 at 05:34

Był to problem z ładowaniem klas - dobrze odpowiedział i wyjaśniono tutaj: Java NoClassDefFoundError podczas wywoływania własnej klasy z metody instrumentowanej Dodanie mojej biblioteki AgentLib zawierającej klasę LogShipper, co pomogło XBootclasspath.