実行時にフォルダーまたは JAR からクラスを検出する
Java アプリケーションの構造を詳しく調べて、有意義な洞察を抽出する Java ツールを想像してください。これを実現するには、ツールは指定されたソース (JAR/WAR またはフォルダー) から .class ファイルをスキャンする必要があります。次に、リフレクションを使用してクラス メソッドとその属性を検査します。ただし、このタスクはとらえどころのないことが判明しています。
URLClassloader に基づくソリューションが多数存在し、ディレクトリまたはアーカイブから特定のクラスをロードできるようになります。ただし、クラスの名前やパッケージ構造についての事前知識がなければ、クラスを識別してロードできるものはないようです。
問題の核心に対処する
詳しく調べると、課題は次のとおりです。再帰的スキャン技術によってすべてのクラス ファイルを取得するのではなく、検出された各ファイルの Class オブジェクトを取得することにあります。
JarFile と URLClassLoader の機能を活用する
提供されたコードJava NIO を効果的に利用して、クラスの存在に関する事前知識を必要とせずに、JAR ファイルからすべてのクラスをロードします。このプロセスには以下が含まれます。
代替案の検討: Javassist
コメンテーターが示唆しているように、Javassist は別の実行可能なオプションを提供します。ループの前に ClassPool を初期化すると、クラス ローダーを使用してクラスをロードする代わりに CtClass オブジェクトを作成できます。 CtClass オブジェクトは、メソッド、フィールド、ネストされたクラスなどを含むクラス属性の配列へのアクセスを提供します。
この包括的なソリューションにより、開発者は実行時にクラスを動的にロードおよび検査できるようになり、強力な基盤が提供されます。洗練されたコード分析および操作ツール。
以上が実行時に JAR またはフォルダーから Java クラスを動的に検出して検査するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。