5

C# では、特定のアセンブリからすべてのクラスを簡単に読み取ることができます。

Javaで同等の機能を探しています。これは、EJB Bean を Guice モジュールに自動的にバインドするために必要です。

4

3 に答える 3

4

残念ながら、Java ですぐに使用できるソリューションはないようです。

私たちのプロジェクトでは、いくつかのブログで提案されたわずかに変更されたアプローチを使用しました。そこで説明されている解決策は、クラスのファイル システムと JAR をスキャンすることです。

何らかのインターフェースを実装するクラスのみを選択したい場合は、 のような追加のチェックを行うことができますclazz.isAssignableFrom(MyInterface.class)

于 2010-04-06T11:32:07.000 に答える
2

アセンブリに相当する Java は JAR ファイルです。JAR ファイルの内容は、 のクラスを使用して一覧表示できますjava.util.jar

Java クラスローディングメカニズムは非常に柔軟で、HTTP 経由でロードされたクラスやオンザフライで生成されたクラスなどを許可するため、一般的なメカニズム (パッケージ内のすべてのクラスを取得するなど) はありません。そのため、利用可能なすべてのクラスを知ることは不可能です。

于 2010-04-06T11:28:08.947 に答える
0

これが1つです http://grepcode.com/file/repo1.maven.org/maven2/com.metapossum/metapossum-scanner/1.0.1/com/metapossum/utils/scanner/PackageScanner.java

ライトウェイト Java フレームワークである Snow で使用しましたが、うまく機能します。

Mavenは次のようなものです

<dependency>
   <groupId>com.metapossum</groupId>
   <artifactId>metapossum-scanner</artifactId>
   <version>1.0.1</version>
</dependency>    
于 2013-01-09T18:30:04.773 に答える