2011-08-12 110 views
4

我正在尋找一種簡單的方法來查看Java包中的我自己的註釋。包中的註釋掃描器

我想要做的是用我自己的註釋標記一些類。掃描儀每分鐘都應該掃描一些軟件包以獲取此註釋。

隨着scanotation罐子我試過

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

與AnnotationDB我可以檢查,如果這個類(FileWatcher.class)的註釋。現在我需要一個類的列表來掃描它們。

我看了一些文章,大多數人都說這是不可能的,因爲類加載器也可能會加載外部jar文件。

我擁有的另一個選擇是複製包含子目錄內的這些註釋的所有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你可以調用註解方法。

如果使用如果你想要一個真正重量輕(無依賴性,簡單的API,15 kb的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>