package io.gitlab.jfronny.inceptum; import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.net.URLClassLoader; public class WrapperStrap { private static final ClassLoader cl = Thread.currentThread().getContextClassLoader(); public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { System.out.println("Starting Inceptum Wrapper ClassLoader"); switchEnv(WrapperStrap.class.getProtectionDomain().getCodeSource().getLocation(), "io.gitlab.jfronny.inceptum.Wrapper", args); } public static void switchEnv(URL url, String mainClass, String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException { ClassLoader cl = new URLClassLoader(new URL[] {url}, WrapperStrap.cl); Thread.currentThread().setContextClassLoader(cl); cl .loadClass(mainClass) .getDeclaredMethod("main", String[].class) .invoke(null, new Object[] {args}); } }