有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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代码执行期间如何解决这个问题

更多信息: 在两种情况下都打印了类加载器:

  1. IntelliJ:java。网URLClassLoader
  2. 朱尼特:太阳。杂项。启动器$AppClassLoader

共 (0) 个答案