Spring:在内部jar中搜索资源

Ale*_*zov 4 java resources spring

我有一个这样的战争结构:Some.war

-WEB-INF
--lib
--- library.jar
---- some.xsd
---- some2.xsd

我想在library.jar中获取所有xsd文件,但是spring不想搜索它.

ContextLoaderListener.getCurrentWebApplicationContext()
                     .getResources("classpath*:**/*.xsd")
Run Code Online (Sandbox Code Playgroud)

结果是空的.我也试过:classpath:**/*.xsd,**/*.xsd.

我如何使用"ant"模板(*/ .xsd)获取jar中的所有xsd文件?

Sea*_*oyd 8

答案在于Spring文档:

4.7.2.3与通配符有关的其他说明

请注意,"类路径*:"与Ant样式模式结合使用时,只能在模式启动前与至少一个根目录可靠地工作,除非实际目标文件驻留在文件系统中.这意味着像"classpath*:*.xml"这样的模式不会从jar文件的根目录中检索文件,而只能从扩展目录的根目录中检索文件.这源于JDK ClassLoader.getResources() 方法的限制,该方法仅返回传入的空字符串的文件系统位置(指示搜索的潜在根).