0

ロードしたいバイナリクラスがありますが、依存関係がありません。ただし、修飾名を取得するために、まだロードしたいと思います。

それ以外には使用できないことを理解しています(それで問題ありません)。修飾名が必要なだけです。

カスタムクラスローダーでこれを行う方法はありますか?

ありがとう、

4

1 に答える 1

1

質問への厳密な回答については、JVM 仕様のシンボリック参照の解決に関するセクションを参照してください。要するに、解決がいつ実行されるかについてはほとんど保証されていません。現在の実装の正確な動作がどのようなものかはわかりませんが、この方法を使用すると、ソリューションはおそらく機能しますが、完全に信頼できるものにはなりません。

ただし、修飾名だけが必要だと言いました。それは別の話ですが、実際には非常に簡単です。JVM 仕様では、クラス ファイルの形式について詳しく説明されています。バイナリがあるため、JVM のクラスローディング メカニズムを完全にバイパスして、データから直接抽出できます。手動で行いたくない場合は、適切なツールを使用してください。すばらしい詳細なドキュメントがあるASMが思い浮かびます。いくつかの代替手段は、 BCELjavassist、およびCGLIB です(メンテナンスされなくなりました)。

于 2013-08-28T16:25:18.703 に答える