2

タイトルの通り、Javassistでコンパイルされたクラスのクラスパスは?

私のシナリオは次のとおりです。クラス A は Javassist でコンパイルされています。クラス B は Java Compiler API でコンパイルされ、クラス A を参照します。問題は、クラス A がクラス B から見えないことです...

何か案は?

4

1 に答える 1

0

クラス B の「クラスパス」は、クラスのコンパイル方法 (クラス ファイルの作成など) に依存するのではなく、クラスのロード方法に依存します。

Java は、クラスのクラス ローダーを使用して、このクラスによって参照されるすべてのクラスも検索します。

各クラスローダーは親クラスローダーを持つことができ、通常はloader.loadClass最初に親クラスローダーにクラスについて問い合わせ、失敗した場合はクラス自体をロードしようとします。

したがって、Aクラスがクラス B のクラス ローダーから見えるようにするだけです。つまり、 のクラス ローダーは、クラス のクラス ローダーのA親 (または親の親、または ...) でなければなりませんB

于 2011-07-21T12:05:56.340 に答える