URIクラスのJavaインストルメンテーション:依存関係を追加するとClassNotFoundExceptionがスローされます

Dec 12 2020

作成したURIをログシッパーに書き込むためにURIコンストラクターをインストルメントしました。Logshipperクラスは、Mavenの依存関係とランタイムArgの両方であるエージェントライブラリの一部です。

エージェント内のInstrumentationは、ClassFileTransformerを使用して、そのコンストラクターにコード行を追加します。ただし、コンストラクターが呼び出されると、detailMessage:edu / overbeck / masterarbeit / agent / LogShipperでClassNotFoundExceptionがスローされます。ClassLoaderを見ると、クラスはロードされています。IntelliJデバッガーのスクリーンショット:![奇妙なエラー] [1]

なぜこれが起こるのですか?私の他のインストルメント化されたクラス、Apache HTTPコアライブラリのContentLengthOutputStreamは、LogShipperで正常に動作します。[1]:https://i.stack.imgur.com/vf8b4.png

回答

PeerOverbeck Dec 13 2020 at 05:34

これはクラスローダーの問題でした-ここでよく答えて説明しました:インストルメント化されたメソッドから独自のクラスを呼び出すときのJava NoClassDefFoundErrorXBootclasspathとしてLogShipperクラスを含むAgentLibを追加すると役立ちました。