タイトルの通り、Javassistでコンパイルされたクラスのクラスパスは?
私のシナリオは次のとおりです。クラス A は Javassist でコンパイルされています。クラス B は Java Compiler API でコンパイルされ、クラス A を参照します。問題は、クラス A がクラス B から見えないことです...
何か案は?
タイトルの通り、Javassistでコンパイルされたクラスのクラスパスは?
私のシナリオは次のとおりです。クラス A は Javassist でコンパイルされています。クラス B は Java Compiler API でコンパイルされ、クラス A を参照します。問題は、クラス A がクラス B から見えないことです...
何か案は?
クラス B の「クラスパス」は、クラスのコンパイル方法 (クラス ファイルの作成など) に依存するのではなく、クラスのロード方法に依存します。
Java は、クラスのクラス ローダーを使用して、このクラスによって参照されるすべてのクラスも検索します。
各クラスローダーは親クラスローダーを持つことができ、通常はloader.loadClass
最初に親クラスローダーにクラスについて問い合わせ、失敗した場合はクラス自体をロードしようとします。
したがって、A
クラスがクラス B のクラス ローダーから見えるようにするだけです。つまり、 のクラス ローダーは、クラス のクラス ローダーのA
親 (または親の親、または ...) でなければなりませんB
。