8

Intellij IDEA プラグインでしばらく遊んだ後、外部依存関係を持つプラグインは、これらの依存関係がプラグイン自体にバンドルされておらず、どこにも公に宣言されていなくても、正常に動作することに気付きました。

無作為に例を挙げると、GenerateToStringプラグインはとりわけ log4j に依存しています。しかし、jar ファイルの中を見ると、独自のクラスといくつかのリソース (画像と html ファイル) とメタデータ (必須の plugin.xml と MANIFEST.MF) だけが含まれていることがわかります。 log4j への参照。そして、プラグインのインストールに必要なのは jar ファイルだけです。

そんなことがあるものか?IDEA はこれらの依存関係をどのように管理しClassNotFoundExceptionて、実行時に a またはそのようなものをスローしないようにしますか?

4

1 に答える 1

6

IDEA はカスタム クラスローダーを使用します。プラグイン ディストリビューションで必要なクラスが見つからない場合は、IDEA_HOME/libディレクトリにあるすべての jar で検索されます。

于 2012-07-15T14:12:00.133 に答える