= 설명 = = 코드 = {{{ ~java /** * just print "say Hello" string to console */ public class HelloWorld { public void sayHello() { System.out.println("say Hello"); } public static void main(String[] args) { HelloWorld helloWorld = new HelloWorld(); helloWorld.sayHello(); } } }}} {{{ ~java /** * call say HelloWorld class in external jar file package */ public class Test { public static void main(String[] args) throws MalformedURLException, ClassNotFoundException, InvocationTargetException, IllegalAccessException, InstantiationException, NoSuchMethodException { ClassLoader classLoader = Test.class.getClassLoader(); System.out.println(classLoader.getClass().getName()); URLClassLoader urlClassLoader = new URLClassLoader( new URL[]{ new URL("file:/Users/fharenheit/Projects/openflamingo/helloworld.jar") }, classLoader ); System.out.println(Thread.currentThread().getContextClassLoader().getClass().getName()); Thread.currentThread().setContextClassLoader(urlClassLoader); System.out.println(Thread.currentThread().getContextClassLoader().getClass().getName()); Class helloWorld = ClassUtils.getClass("HelloWorld"); Object o = helloWorld.newInstance(); Method[] declaredMethods = helloWorld.getDeclaredMethods(); for (int i = 0; i < declaredMethods.length; i++) { Method declaredMethod = declaredMethods[i]; System.out.println(declaredMethod.getName()); } Method sayHello = o.getClass().getMethod("sayHello", null); sayHello.invoke(o, null); } } }}}