import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
public class FileClassLoader {
public static void main(String[] args)
throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException
, MalformedURLException{
/* urls : 일종의 classpath에 해당하는 경로이다.
새로운 URL instance를 만드는 과정에서 File.toURL()을 사용하지 않은 이유는
deprecated 되었기 때문이다. 이유는 Separator에 대한 문제이다. 자세한 내용은
API 를 찾고하기 바랍니다.
*/
URL[] urls = new URL[]{new java.io.File("C:/Documents and Settings/박준홍/My Documents/Java Workspace/_DummyClasses/").toURI().toURL()};
/*URLClassLoader(URL[]) 는 다음과 같다.
ucp 라는 변수는 URLClassPath 의 instance 이다.
public URLClassLoader(URL[] urls) {
super();
// this is to make the stack depth consistent with 1.1
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkCreateClassLoader();
}
ucp = new URLClassPath(urls);
acc = AccessController.getContext();
}
PrintTime 는 urls 속에 존재하는 PrintTiem.class 파일이다.
차후에는 urls로 classpath를 선언한 후에, PrintTime.class 과 같은
외부 class 파일을 로딩하기 위함이다.
예에서는 단순히 하나의 .class 파일을 사용하였으나, 차후에는 .jar 파일을 다운받아서
package 내 Class 까지의 path를 입력해서 보다 명확하게 새로운 class를 사용할 수가 있다.
*/
Class<?> clazz = new URLClassLoader(urls).loadClass("PrintTime");
/* Interface MobileCode는 서로 다른 Host를 이동하는 Class들에게 공통된 메소드를
부여하기 위한 Interface 이다. 당근 init() 는 MobileCode 에서 선언한 메소드 이다. */
MobileCode mc = (MobileCode)clazz.newInstance();
mc.init();
}
}
'IT_Programming > Java' 카테고리의 다른 글
Applet → Refference JavaScript (0) | 2007.11.22 |
---|---|
[JDBC] CallableStatement (Stored procedure) (0) | 2007.10.28 |
Java 관련 사이트 (0) | 2007.08.23 |
Collection 클래스 (0) | 2007.07.05 |
Comparable 인터페이스 (0) | 2007.07.05 |