더북(TheBook)

독자적으로 URLClassLoader 인스턴스를 생성해 클래스 패스에 없는 디렉터리나 JAR 파일에서 클래스를 로드할 수도 있다. 흔히 플러그인을 로드할 때 이 방법을 사용한다.

URL[ ] urls = {

    new URL("file:///path/to/directory/"),

    new URL("file:///path/to/jarfile.jar")

};

String className = "com.mycompany.plugins.Entry";

try (URLClassLoader loader = new URLClassLoader(urls)) {

    Class<?> cl = Class.forName(className, true, loader);

    // 이제 cl의 인스턴스를 생성한다(4.5.4 객체 생성 참고).

    ...

}


icon Caution

Class.forName(className, true, loader) 호출에서 두 번째 매개변수는 대상 클래스를 로드한 후 정적 초기화가 일어남을 보장한다. 분명 여러분도 정적 초기화가 일어나게 하고 싶을 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.