Carefully calculate system class loader for launcher

If you get it wrong then there is a conflict between the JarFile
implementations in the deployer app and Spring Boot latest.

Fixes #132
This commit is contained in:
Dave Syer
2019-07-22 15:21:14 +01:00
parent a4b5727a05
commit 3d63de2405
2 changed files with 14 additions and 4 deletions

View File

@@ -188,11 +188,21 @@ public class LauncherCommand extends OptionParsingCommand {
dependency.put("transitive", false);
URI[] uris = grapeEngine.resolve(null, dependency);
URLClassLoader loader = new URLClassLoader(new URL[] { uris[0].toURL() },
getClass().getClassLoader().getParent().getParent());
systemClassLoader(getClass().getClassLoader()));
log.debug("resolved URIs " + Arrays.asList(loader.getURLs()));
return loader;
}
private ClassLoader systemClassLoader(ClassLoader classLoader) {
if (classLoader.getParent().getParent()!=null) {
if (classLoader.getParent().getParent().getParent()!=null) {
return classLoader.getParent().getParent().getParent();
}
return classLoader.getParent().getParent();
}
return classLoader.getParent();
}
private String getVersion() {
Package pkg = LauncherCommand.class.getPackage();
String version = (pkg != null ? pkg.getImplementationVersion()

View File

@@ -17,9 +17,9 @@
</parent>
<properties>
<spring-cloud-deployer.version>1.3.8.RELEASE</spring-cloud-deployer.version>
<spring-cloud-deployer-resource-support.version>1.3.3.RELEASE</spring-cloud-deployer-resource-support.version>
<spring-cloud-deployer-thin.version>1.0.15.RELEASE</spring-cloud-deployer-thin.version>
<spring-cloud-deployer.version>2.0.4.RELEASE</spring-cloud-deployer.version>
<spring-cloud-deployer-resource-support.version>2.0.3.RELEASE</spring-cloud-deployer-resource-support.version>
<spring-cloud-deployer-thin.version>1.0.22.RELEASE</spring-cloud-deployer-thin.version>
</properties>
<dependencyManagement>