JAVA网使用Spring PathMatchingResourcePatternResolver时出现URI语法异常
我使用Spring的PathMatchingResourcePatternResolver类从jar动态加载资源
示例代码:
String RESOURCE_CLASSPATH = "classpath*:**/xyz/abc/**/*"
String RESOURCE1 = "(.)+/xyz/abc/resource/([A-Za-z]+)-resource1.zip"
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(Test.class.getClassLoader());
Resource[] resources = resolver.getResources(RESOURCE_CLASSPATH);
for (Resource resource : resources) {
if (identifyResource1(resource.getURI().toString()))
// add to resource1 list
}
private boolean identifyResource1(String resource) {
return Pattern.matches(RESOURCE1, resource);
}
上面的代码在IDE(intelliJ)中完美地工作,并从jar中为我提供正确的数据
如果我在命令提示符下以junit(使用maven进行构建过程)运行代码,那么同样的代码就不起作用
以下是错误:
Caused by: java.net.URISyntaxException: Illegal character in opaque part at index 11: jar:file:C:\Users\<.m2_location>myTest.jar!/.../.../.../xyz/abc/resource/TestJar1-resource1.zip
我猜这是因为“文件:C:\”部分应该是“文件:/C:\”的缘故
当我在IntelliJ中运行相同的代码时,我得到以下路径:
jar:file:/C:/Users/<.m2_location>myTest.jar!/.../.../.../xyz/abc/resource/TestJar1-resource1.zip
Q.在junit代码执行期间如何解决这个问题
更多信息: 在两种情况下都打印了类加载器:
- IntelliJ:java。网URLClassLoader
- 朱尼特:太阳。杂项。启动器$AppClassLoader
共 (0) 个答案