Support nested jar paths in loader.path

See gh-11121
pull/11918/head
hanyong 7 years ago committed by Andy Wilkinson
parent 886f782b20
commit 9eb8e3d4e3

@ -483,6 +483,10 @@ public class PropertiesLauncher extends Launcher {
}
private Archive getArchive(File file) throws IOException {
// Nested path never exists as plain jar file, which should be ignored here.
if (file.getPath().contains("!")) {
return null;
}
String name = file.getName().toLowerCase();
if (name.endsWith(".jar") || name.endsWith(".zip")) {
return new JarFileArchive(file);

@ -213,6 +213,15 @@ public class PropertiesLauncherTests {
assertThat(archives).areExactly(1, endingWith("app.jar!/"));
}
@Test
public void testUserSpecifiedNestedJarPath() throws Exception {
System.setProperty("loader.path", "nested-jars/app.jar!/foo.jar");
System.setProperty("loader.main", "demo.Application");
PropertiesLauncher launcher = new PropertiesLauncher();
List<Archive> archives = launcher.getClassPathArchives();
assertThat(archives).hasSize(1).areExactly(1, endingWith("foo.jar!/"));
}
@Test
public void testUserSpecifiedDirectoryContainingJarFileWithNestedArchives()
throws Exception {

Loading…
Cancel
Save