Allow classpath wildcards with Java 11 or above

Update `StaticResourceJars` to catch both `IOException` and
`InvalidPathException` when checking URLs. Prior to this commit only
`IOException` was caught which worked on Java 8 but not Java 11 or
above.

Fixes gh-21312
This commit is contained in:
Phillip Webb 2020-05-05 12:06:40 -07:00
parent e54b7d07c9
commit df70c42f98
2 changed files with 11 additions and 1 deletions

View File

@ -25,6 +25,7 @@ import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
import java.nio.file.InvalidPathException;
import java.util.ArrayList;
import java.util.List;
import java.util.jar.JarFile;
@ -124,7 +125,7 @@ class StaticResourceJars {
try {
return isResourcesJar(new JarFile(file));
}
catch (IOException ex) {
catch (IOException | InvalidPathException ex) {
return false;
}
}

View File

@ -78,6 +78,15 @@ public class StaticResourceJarsTests {
assertThat(staticResourceJarUrls).hasSize(1);
}
@Test
public void ignoreWildcardUrls() throws Exception {
File jarFile = createResourcesJar("test-resources.jar");
URL folderUrl = jarFile.getParentFile().toURI().toURL();
URL wildcardUrl = new URL(folderUrl.toString() + "*.jar");
List<URL> staticResourceJarUrls = new StaticResourceJars().getUrlsFrom(wildcardUrl);
assertThat(staticResourceJarUrls).isEmpty();
}
private File createResourcesJar(String name) throws IOException {
return createJar(name, (output) -> {
JarEntry jarEntry = new JarEntry("META-INF/resources");