プロジェクトでは、特定のディレクトリの下に異なるjar
ファイルをロードする必要があります。次に、特定のinterface
を実装するファイル.class
を検索します。検索したものが見つかったら、Class.forName()
でロードする必要があります。このすべてを行う簡単な方法はありますか?いくつかのサンプルコードを提案できますか?jar内のクラスのリストとロード
答えて
また私はあなたがプレーンJavaアプリケーションであればMarkのアプローチが好きで、Interface < - >実装を先にマッピングすることを定義したいと思っています。
あなたが望むことをやり遂げるもう一つの方法は、現在実行中のクラスパスを考慮してクラスパスをスキャンして、それを使ってAnnotationまたはInterfaceでコンポーネントを見つけることです。
この例の一般的な例は、たとえばSpringです。
春以外で使うには、ReflectionsやClass-Searchのようなライブラリを使ってクラスパス内を検索することができます。
私は最近、現在のクラスパス内の何かを見つけるためにVaadin/GWTと彼らのアプローチで手を加えているので、手動でそのような何かを実装する場合、そのツールからthis classは同様にあなたのための興味深い可能性があります。
Martijnのように、これらのソリューションはクラスパスにJARを追加する必要があるため、クラスが読み込まれ、見つかったコンポーネントを解釈する必要があります。
クラスが読み込まれずにそれを読み込むことができない場合は、ASMなどのライブラリの上に何かを作成してください。おそらく、クラスをロードせずに.class
-ファイルの解釈を提供することができます。
クラスが最初に読み込まずに特定のインターフェイスを実装しているかどうかは確認できません。だから、私はあなたがすべてのクラスファイルをロードするか、あなたの問題を解決しようとする/あなたのターゲットを別の方法で達成する必要があると思います。
.classファイルバイナリを読み込み、それが実装するインターフェイスをバイトコードで調べることができますが、これを行う方法を私に尋ねることはできません。 :)
ServiceLoaderを見てください。これにより、これらのクラスの実装者は、そのインタフェースのjarによって提供されるすべての実装クラスをリストアップする記述ファイル/META-INF/services/<fqn-of-interface>
を提供する必要があります。
それは私の問題に対処しているようです。私はそれのためのいくつかのサンプルコードをGoogleにします。ありがとうございました。 – cacert
- 1. jarファイルのメモリ内ストリームからクラスをロードする方法
- 2. jar内のクラスを動的にリストする
- 3. ロードXSDスキーマは、私のjarファイル内の
- 4. Jarからクラスをロードするには?
- 5. Jboss EAP 6.4.4クラスjaxb jarをロードする
- 6. リスト要素内の動的フィールドのクラス変更と、リスト要素内のクラス
- 7. Jrubyの.jar内のJavaクラスにアクセス
- 8. URLClassloaderのライブラリjarの最新バージョンのクラスをロードする
- 9. Groovyのロードjarファイル
- 10. 内包クラスをロードせずに内クラスをロードする
- 11. パッケージと内部クラスをロードする
- 12. jarのクラス全体をバイト配列でロードするには?
- 13. クラスはMaven Webアプリケーションのjarファイルからロードされません
- 14. gradleクラスの別のjarのライブラリフォルダ内のjarを参照していません
- 15. Perlスクリプト内のディスクパーティションのリストを再ロード
- 16. 動的にロードされたJAR/etc。同一のJVMコンテナ内の
- 17. Jarファイル内のJava Jar
- 18. クラス内にconfig.phpをロード
- 19. libRETS jarをロード中のjava.lang.UnsatisfiedLinkError
- 20. システムジャーの前にjarをロード
- 21. ロードするクラスに必要なクラスのリストを取得する
- 22. .jarからクラスをロードしようとするとClassCastExceptionが発生する
- 23. アセットのjarファイル内にアセットがロードされない
- 24. getResource()はjar内のコンテンツをロードできません
- 25. webapp内の異なるjarからhbm.xmlファイルをロード
- 26. Java - 現在のJAR内のファイル名のリストを取得
- 27. JavaアプレットのJAR内のファイルのリストを取得する
- 28. Javaでのクラスの内容のリスト
- 29. lib jar内のクラスからのコンテキスト・パラメータのアクセス
- 30. Android(Java)の別のjarファイル内のjar
はい、あなたは正しいです。私の実際の問題は、Class.forName()が完全な名前を期待しているので、完全なクラス名(パッケージ付き)を見つけることです。私はあらかじめ瓶のクラス名を知らない。 – cacert