2011-08-12 9 views
4

私は自分の注釈のためにJavaパッケージを調べる簡単な方法を探しています。パッケージ内の注釈スキャナ

私がしようとしているのは、いくつかのクラスに自分の注釈を付けることです。スキャナーは毎分、この注釈のパッケージをスキャンする必要があります。 scanotationジャー付

私は、このクラス(FileWatcher.class)は注釈を持っている場合、私がチェックできる

URL url = ClasspathUrlFinder.findClassBase(FileWatcher.class); 

とAnnotationDBとすることを試みました。今私はそれらをすべてスキャンするためにクラスのリストが必要です。

私はいくつかの記事を読んで、ほとんどの人は、クラスローダーが外部のjarファイルを読み込むことができなかったため、可能ではないと言っていました。

私が持っているもう1つの選択肢は、サブディレクトリ内にこれらの注釈を含むすべてのEJBプロジェクトをコピーし、それらのすべてのjarファイルをスキャンすることです。私はそれがうまくいくと思いますが、良い方法はありませんか?

多くのご挨拶、 Hauke

答えて

1

ありがとうございました。それは多くの助けとなり、非常に簡単に作業しています。誰かがそれを必要とする場合:

 String packagename = "de.whatever"; 

     final Reflections reflections = new Reflections(packagename); 

     Set<Class<? extends CargoServiceListenerInterface>> subTypes = reflections.getSubTypesOf(CargoServiceListenerInterface.class); 

     for (Class<? extends CargoServiceListenerInterface> class1 : subTypes) { 
     System.out.println("Class : " + class1.getName()); 
     } 

getSubtypesの代わりに、注釈メソッドも呼び出すことができます。

あなたはMavenを使用する場合は、あなたが本当に軽量にしたい場合(依存関係、シンプルなAPI、15キロバイトのjarファイル)と非常に高速ソリューション、のpom.xmlに

<repositories> 
    <repository> 
     <id>reflections-repo</id> 
     <name>Reflections Maven2 Repository</name> 
     <url>http://reflections.googlecode.com/svn/repo</url> 
    </repository> 
</repositories> 

    <dependency> 
    <groupId>org.reflections</groupId> 
    <artifactId>reflections</artifactId> 
    <version>0.9.5</version> 
</dependency>