URL to load resources from the classpath in Java介绍如何使用URLStreamHandler
启用new URL("classpath:org/my/package/resource.extension")
我想在JBoss AS 7上使用相同的方法,但调用java.net.URL.setURLStreamHandlerFactory(URL.java:1102)
会导致java.lang.Error: factory already defined
因此AS 7已经设置了URLStreamHandlerFactory
,这只能完成一次。
是否有其他方法可以在jboss上为URLStreamHandler
前缀注册classpath:
,还是可以使用vfs
?
答案 0 :(得分:0)
很老的帖子,但我得到了一些有用的答案。 由David Lloyd"在JBoss问题:
在AS7中,这只是调用org.jboss.modules.Module #registerURLStreamHandlerFactoryModule()的问题,其中包含协议的处理程序工厂的模块名称,并确保该模块具有META-INF / services /java.net.URLStreamHandler文件。或者,您可以在jboss.protocol.handler.modules系统属性中指定模块名称,该属性与java.protocol.handler.pkgs的工作方式类似,除了不接受应用程序类路径中的包名列表,它接受一个列表引导模块加载器中的模块名称。
详细信息如下:https://issues.jboss.org/browse/AS7-1562
嗯,就我而言,我只是改变我的实现以使用Spring的PathMatchingResourcePatternResolver:
ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
try {
Resource [] mappingLocations = patternResolver.getResources("classpath*:" + myBaseXmlPath + "/**/*.xml");
for(int i = 0; i < mappingLocations.length; i++) {
// do whatever you want ...
System.out.println(mappingLocations[i].getFile());
}
}
catch(IOException e) {
throw new RuntimeException(e);
}
它已经处理了&#f;&#39;通过代理类加载器。