簡體   English   中英

將ClassPathScanningCandidateComponentProvider與多個jar文件一起使用?

[英]Using ClassPathScanningCandidateComponentProvider with multiple jar files?

我正在尋找使用ClassPathScanningCandidateComponentProvider來查找我的JVM中特定類的子類。

我正在做的就是這里描述的內容: 在運行時掃描Java注釋

但是,當我從ant調用代碼時,通過JMX bean我遇到了一個嚴重的問題。

我用搜索包調用:ClassPathScanningCandidateComponentProvider.findCandidateComponents:“com.mycompany”

但是,我的類路徑中有多個jar文件包含以該包開頭的類。 Spring掃描完第一個后停止掃描(我知道這就好像我搜索java.lang.Object的sublasees一樣,我在一個jar文件中得到所有類)。

有沒有辦法告訴ClassPathScanningCandidateComponentProvider / Spring在第一個jar之后不要停止掃描?

干杯

事實證明我必須明確定義ClassLoader,因為當從JMX運行掃描時,它將在不同的加載器上查找類並且什么也找不到

//Add that at top of class
private static final ClassLoader classLoader = MyClass.class.getClassLoader();

...

ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider( true);

provider.addIncludeFilter(new AssignableTypeFilter(forClass));

//Had to add this line
provider.setResourceLoader(new PathMatchingResourcePatternResolver(classLoader));

final Set<BeanDefinition> candidates = provider.findCandidateComponents(SEARCH_PACKAGE);

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM