実行時にどのクラスがどの JAR からロードされるかを判断する方法はありますか?
私たちは皆、以前に JAR 地獄にいたことがあると確信しています。私はこの問題に何度も遭遇し、プロジェクトのトラブルシューティングClassNotFoundException
やトラブルシューティングを行ってきました。NoClassDefFoundError
JAR 内のクラスのすべてのインスタンスを検索したり、コードで削除プロセスを使用して CNFE が原因を見つけたりすることは避けたいと思います。
この種の情報を提供するプロファイリングまたは管理ツールはありますか?
この問題は、クラスがロードされるときにこの情報が必要なため、非常に厄介です。そこにたどり着く方法、または記録して見つける方法がなければなりませんが、これを行う方法を私は何も知りませんよね?
OSGi とバージョン管理されたバンドル/モジュールがこれを問題にしないようにすることを目指していることは知っていますが、すぐになくなるわけではないようです。
注: この質問は、バージョン管理された jar からロードされたクラスに関連する私の質問のサブセットであることがわかりました。
多少関連するこの投稿では、JAR 内 (現在のディレクトリの下) または M2_REPO 内でクラスを検索する戦略について説明しています: JarScan、特定のクラスのすべてのサブフォルダー内のすべての JAR ファイルをスキャンします。
また、多少関連するJBoss Tattletale