ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Tip] - Jar 파일 로드하기
    Java/Tip, Solution 2017. 8. 18. 14:31

    실행이 필요한 Jar 파일을 만들때 주로 사용하는것이 MANIFEST.MF 파일이다.

     

     Main-Class 주체가 되는 Jar 파일을 실행시 다른 Jar 파일을 JVM에 로드하려면 Class-Path에 Jar 파일을 명시하여 다른 Jar 파일들을 JVM에 읽어 들일 수 있다. 하지만 필요한 라이브러리가 추가될 경우 Class-Path에 추가된 Jar파일을 명시해야 하고 다시 실행 주체가 되는 Jar 파일을 다시 만들어야 한다. 

     

     다른 Jar 파일 추가가 영구적으로 없을시에는 상관 없으나 추가가 될 수도 있는 상황이라면 MANIFEST.MF 파일 Class-Path 에 로드할 Jar 파일들을 명시하는게 번거로울수 있다 개발 단계에서는 이런 번거로움을 피하기 위해서 Reflection을 활용하면 쉽게 해결할 수 있다.

     

    해당 코드는 Reflection 을 활용하여 같은 경로에 있는 다른 Jar 파일들을 JVM에 로드하는 코드이다.

     

    - runAsFile : 실행하는 파일 이름

    - directory : 실행하는 파일이 위치한 디렉토리 경로

     

    static void loadLibrary(final String runAsFile, String directory) { 
    	try { 
        	final URLClassLoader loader = (URLClassLoader) ClassLoader.getSystemClassLoader(); 
            final Method method = URLClassLoader.class.getDeclaredMethod( 
            	"addURL", new Class[] { URL.class }); 
            method.setAccessible(true); 
            new File(directory).listFiles(new FileFilter() { 
            	public boolean accept(File file) { 
               		if (!file.toString().contains(runAsFile) && 
                   		file.toString().toLowerCase().contains(".jar")) { 
                       	try { 
                       		method.invoke(loader, new Object[] { file.toURI().toURL() }); 
                       	} catch (Exception e) { 
                       
                       	} 
                   	} 
                   	return false; 
               	} 
            }); 
        } catch (Exception e) { 
            JOptionPane.showMessageDialog(null, e.toString()); 
        } 
    }

     

    댓글

Designed by Tistory.