From 953a82c66c3314d0761074094f2311a11463c496 Mon Sep 17 00:00:00 2001 From: "chang.ray" Date: Wed, 9 Mar 2022 14:56:10 +0800 Subject: [PATCH] fix: fix StringIndexOutOfBoundsException on issue #635 --- .../org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java b/mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java index 0c7e0c02f..108844050 100644 --- a/mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java +++ b/mybatis-spring-boot-autoconfigure/src/main/java/org/mybatis/spring/boot/autoconfigure/SpringBootVFS.java @@ -18,6 +18,8 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.net.URL; +import java.net.URLDecoder; +import java.nio.charset.Charset; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -48,6 +50,7 @@ public boolean isValid() { @Override protected List list(URL url, String path) throws IOException { String urlString = url.toString(); + urlString = URLDecoder.decode(urlString, Charset.defaultCharset().name()); String baseUrlString = urlString.endsWith("/") ? urlString : urlString.concat("/"); Resource[] resources = resourceResolver.getResources(baseUrlString + "**/*.class"); return Stream.of(resources).map(resource -> preserveSubpackageName(baseUrlString, resource, path))