자바프로그램을 만들다 보면 정말 많은 컴포넌트를 사용하게 된다. 그런데 이러한 컴포넌트를 클래스 패스에 설정해주고 실행하는것은 여간 귀찮은 일이다. 그래서 간단하게 특정 디렉토리에 ,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클래스 로더와 리플렉션을 이용하면 간단하게 런처를 만들수 있다.

 

'코딩과 개발' 카테고리의 다른 글

The GNU C Library Reference Manual  (0) 2009.10.30
멀티 쓰레드 패턴  (0) 2009.10.26
Eclipse RCP 따라하기  (1) 2009.10.26
Java ClassLoader 이해하기  (0) 2009.10.26
Posted by sjokim
,