Java Launcher만들기
자바프로그램을 만들다 보면 정말 많은 컴포넌트를 사용하게 된다. 그런데 이러한 컴포넌트를 클래스 패스에 설정해주고 실행하는것은 여간 귀찮은 일이다. 그래서 간단하게 특정 디렉토리에 ,jar 파일들을 넣어두고 자동으로 클래스 패스가 처리된다면 편리하것이다. 이것을 위해 런처를 사용한다.
런처를 만들기 위해서는 다음과 같은 로직을 갖는다.
1. URLClassLoader 초기화
2. 리플렉션에 의한 main() 함수 호출
public static void main(String[] args) throws Throwable {
URL[] jarfiles = ...
ClassLoader classloader
= new URLClassLoader ( jarfiles, Launcher.class.getClassLoader());
Thread.currentThread().setContextClassLoader(cl);
String mainclass= System.getProperty("main");
/**
* 리플렉션에 의함 원래의 메인함수 호출
*/
Class c = Class.forName(mainclass, true, classloader );
Class[] argc = { String[].class };
Object[] argo = { args};
java.lang.reflect.Method method = c.getDeclaredMethod("main", argc);
try {
method.invoke(null,argo);
} catch (InvocationTargetException e) {
throw e.getTargetException();
}
}
URL클래스 로더와 리플렉션을 이용하면 간단하게 런처를 만들수 있다.