JavaTM Platform
Standard Ed. 6

java.net
클래스 URLClassLoader

java.lang.Object 
  상위를 확장 java.lang.ClassLoader 
      상위를 확장 java.security.SecureClassLoader 
          상위를 확장 java.net.URLClassLoader
직계의 기존의 서브 클래스:
MLet


public class URLClassLoader
extends SecureClassLoader

이 클래스 로더는, JAR 파일과 디렉토리의 양쪽 모두를 참조하는 URL 의 검색 패스로부터, 클래스와 자원을 로드하기 위해서(때문에) 사용됩니다. 「/」으로 끝나는 URL 는 모두, 디렉토리를 참조하고 있다고 보입니다. 그 이외의 경우, URL 는 JAR 파일을 참조하고 있다고 보입니다. JAR 파일은 필요에 따라서 오픈됩니다.  

URLClassLoader 의 인스턴스를 생성한 thread의 AccessControlContext 는, 그 후에 클래스 및 자원을 로드할 때 사용됩니다.  

로드 되는 클래스에는, 디폴트에서는, URLClassLoader 의 작성시로 지정된 URL 인 만큼 접속할 수 있는 액세스권이 주어집니다.

도입된 버젼:
1.2

생성자 의 개요
URLClassLoader (URL [] urls)
          위양 관계의 부모가 되어 있는 디폴트의 ClassLoader 를 사용해, 지정된 URL 의 새로운 URLClassLoader 를 구축합니다.
URLClassLoader (URL [] urls, ClassLoader  parent)
          지정된 URL 의 새로운 URLClassLoader 를 구축합니다.
URLClassLoader (URL [] urls, ClassLoader  parent, URLStreamHandlerFactory  factory)
          지정된 URL, 친클래스 로더, 및 URLStreamHandlerFactory 를 위한 새로운 URLClassLoader 를 구축합니다.
 
메소드의 개요
protected  void addURL (URL  url)
          지정된 URL 를, 클래스 및 자원을 검색하기 위한 URL 리스트에 추가합니다.
protected  Package definePackage (String  name, Manifest  man, URL  url)
          이 ClassLoader 로 이름을 사용해 새로운 패키지를 정의합니다.
protected  Class <? > findClass (String  name)
          URL 검색 패스로부터, 지정된 이름을 가지는 클래스를 검색해 로드합니다.
 URL findResource (String  name)
          URL 검색 패스상에서, 지정된 이름을 가지는 자원을 검색합니다.
 Enumeration <URL > findResources (String  name)
          URL 검색 패스상의 지정된 이름을 가지는 자원을 나타내는, URL 의 열거를 돌려줍니다.
protected  PermissionCollection getPermissions (CodeSource  codesource)
          지정된 codesource 객체의 액세스권을 돌려줍니다.
 URL [] getURLs ()
          클래스 및 자원을 로드하기 위한 URL 의 검색 패스를 돌려줍니다.
static URLClassLoader newInstance (URL [] urls)
          지정된 URL 와 디폴트의 친클래스 로더에 대한, URLClassLoader 의 새로운 인스턴스를 작성합니다.
static URLClassLoader newInstance (URL [] urls, ClassLoader  parent)
          지정된 URL 와 친클래스 로더에 대한, URLClassLoader 의 새로운 인스턴스를 작성합니다.
 
클래스 java.security. SecureClassLoader 로부터 상속된 메소드
defineClass , defineClass
 
클래스 java.lang. ClassLoader 로부터 상속된 메소드
clearAssertionStatus , defineClass , defineClass , defineClass , defineClass , definePackage , findLibrary , findLoadedClass , findSystemClass , getPackage , getPackages , getParent , getResource , getResourceAsStream , getResources , getSystemClassLoader , getSystemResource , getSystemResourceAsStream , getSystemResources , loadClass , loadClass , resolveClass , setClassAssertionStatus , setDefaultAssertionStatus , setPackageAssertionStatus , setSigners
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

URLClassLoader

public URLClassLoader(URL [] urls,
                      ClassLoader  parent)
지정된 URL 의 새로운 URLClassLoader 를 구축합니다. URL 는, 친클래스 로더내에서 검색된 뒤, 클래스 및 자원으로 지정된 순서로 검색됩니다. 「/」으로 끝나는 URL 는 모두, 디렉토리를 참조하고 있다고 보입니다. 그 이외의 경우, URL 는 JAR 파일을 참조하고 있다고 보입니다. JAR 파일은 필요에 따라서 다운로드 및 오픈됩니다.

시큐리티 매니저가 존재하는 경우, 이 메소드는 최초로 시큐리티 매니저의 checkCreateClassLoader 메소드를 호출하는 것으로, 이 클래스 로더의 작성이 허가되고 있는 것을 확인합니다.

파라미터:
urls - 클래스 및 자원의 로드원이 되는 URL
parent - 위양을 위한 친클래스 로더
예외:
SecurityException - 시큐리티 매니저가 존재해, 그 checkCreateClassLoader 메소드가 클래스 로더의 작성을 허가하지 않는 경우
관련 항목:
SecurityManager.checkCreateClassLoader()

URLClassLoader

public URLClassLoader(URL [] urls)
위양 관계의 부모가 되어 있는 디폴트의 ClassLoader 를 사용해, 지정된 URL 의 새로운 URLClassLoader 를 구축합니다. URL 는, 친클래스 로더내에서 검색된 뒤, 클래스 및 자원으로 지정된 순서로 검색됩니다. 「/」으로 끝나는 URL 는 모두, 디렉토리를 참조하고 있다고 보입니다. 그 이외의 경우, URL 는 JAR 파일을 참조하고 있다고 보입니다. JAR 파일은 필요에 따라서 다운로드 및 오픈됩니다.

시큐리티 매니저가 존재하는 경우, 이 메소드는 최초로 시큐리티 매니저의 checkCreateClassLoader 메소드를 호출하는 것으로, 이 클래스 로더의 작성이 허가되고 있는 것을 확인합니다.

파라미터:
urls - 클래스 및 자원의 로드원이 되는 URL
예외:
SecurityException - 시큐리티 매니저가 존재해, 그 checkCreateClassLoader 메소드가 클래스 로더의 작성을 허가하지 않는 경우
관련 항목:
SecurityManager.checkCreateClassLoader()

URLClassLoader

public URLClassLoader(URL [] urls,
                      ClassLoader  parent,
                      URLStreamHandlerFactory  factory)
지정된 URL, 친클래스 로더, 및 URLStreamHandlerFactory 를 위한 새로운 URLClassLoader 를 구축합니다. parent 인수는, 위양용의 친클래스 로더로서 사용됩니다. factory 인수는, 새로운 JAR URL 를 작성할 경우에 프로토콜 핸들러를 취득하기 위한 스트림 핸들러 팩토리로서 사용됩니다.

시큐리티 매니저가 존재하는 경우, 이 메소드는 최초로 시큐리티 매니저의 checkCreateClassLoader 메소드를 호출하는 것으로, 이 클래스 로더의 작성이 허가되고 있는 것을 확인합니다.

파라미터:
urls - 클래스 및 자원의 로드원이 되는 URL
parent - 위양을 위한 친클래스 로더
factory - URL 의 작성시에 사용하는 URLStreamHandlerFactory
예외:
SecurityException - 시큐리티 매니저가 존재해, 그 checkCreateClassLoader 메소드가 클래스 로더의 작성을 허가하지 않는 경우
관련 항목:
SecurityManager.checkCreateClassLoader()
메소드의 상세

addURL

protected void addURL(URL  url)
지정된 URL 를, 클래스 및 자원을 검색하기 위한 URL 리스트에 추가합니다.

파라미터:
url - URL 의 검색 패스에 추가하는 URL

getURLs

public URL [] getURLs()
클래스 및 자원을 로드하기 위한 URL 의 검색 패스를 돌려줍니다. 이것에는, 생성자 으로 지정된 URL 의 원의 리스트와 나중에 addURL() 메소드에 의해 추가된 URL 도 포함됩니다.

반환값:
클래스 및 자원을 로드하기 위한 URL 의 검색 패스

findClass

protected Class <? > findClass(String  name)
                      throws ClassNotFoundException 
URL 검색 패스로부터, 지정된 이름을 가지는 클래스를 검색해 로드합니다. JAR 파일을 참조하고 있는 URL 는 모두, 클래스가 발견될 때까지 필요에 따라서 로드 및 오픈됩니다.

오버라이드(override):
클래스 ClassLoader 내의 findClass
파라미터:
name - 클래스의 이름
반환값:
결과적으로 얻을 수 있는 클래스
예외:
ClassNotFoundException - 클래스가 발견되지 않는 경우

definePackage

protected Package  definePackage(String  name,
                                Manifest  man,
                                URL  url)
                         throws IllegalArgumentException 
이 ClassLoader 로 이름을 사용해 새로운 패키지를 정의합니다. 지정된 Manifest에 포함되는 속성은, 패키지의 버젼이나 실링 정보를 취득하기 위해서 사용됩니다. 씰 된 패키지의 경우, 그 패키지의 로드원이 된 코드 소스 URL 를, 추가의 URL 로 지정합니다.

파라미터:
name - 패키지명
man - 패키지의 버젼, 및 실링 정보를 포함한 Manifest
url - 패키지의 코드 소스 URL. 없는 경우는 null
반환값:
새롭게 정의된 Package 객체
예외:
IllegalArgumentException - 이 클래스 로더 또는 게다가 위클래스 로더의 어느 쪽인가에 포함되는 기존의 패키지와 이 패키지의 이름이 중복 하고 있는 경우

findResource

public URL  findResource(String  name)
URL 검색 패스상에서, 지정된 이름을 가지는 자원을 검색합니다.

오버라이드(override):
클래스 ClassLoader 내의 findResource
파라미터:
name - 자원의 이름
반환값:
자원의 URL. 자원이 발견되지 않았던 경우는 null

findResources

public Enumeration <URL > findResources(String  name)
                               throws IOException 
URL 검색 패스상의 지정된 이름을 가지는 자원을 나타내는, URL 의 열거를 돌려줍니다.

오버라이드(override):
클래스 ClassLoader 내의 findResources
파라미터:
name - 자원명
반환값:
URL열거
예외:
IOException - 입출력 예외가 발생했을 경우

getPermissions

protected PermissionCollection  getPermissions(CodeSource  codesource)
지정된 codesource 객체의 액세스권을 돌려줍니다. 이 메소드의 구현은 우선, super.getPermissions 를 호출해, 다음에, codesource 의 URL 에 근거해 액세스권을 추가합니다.  

이 URL 의 프로토콜이 「jar」의 경우, 허가되는 액세스권은, JAR 파일의 URL 가 필요로 하는 액세스권에 근거한 것이 됩니다.  

프로토콜이 「file」로, 패스로 해서 파일이 지정되고 있는 경우에는, 그 파일의 읽기 권한이 허가됩니다. 프로토콜이 「file」로, 패스가 디렉토리인 경우에는, 그 디렉토리내에 포함되는 모든 파일의 읽기 권한과(재귀적으로) 모든 파일과 서브 디렉토리의 읽기 권한이, 허가됩니다.  

프로토콜이 「file」가 아닌 경우는, URL 로 지정된 호스트에 대해, 호스트에게로의 접속, 호스트로부터의 접속 수락이 허가됩니다.

오버라이드(override):
클래스 SecureClassLoader 내의 getPermissions
파라미터:
codesource - 코드 소스
반환값:
코드 소스에게 줄 수 있었던 액세스권

newInstance

public static URLClassLoader  newInstance(URL [] urls,
                                         ClassLoader  parent)
지정된 URL 와 친클래스 로더에 대한, URLClassLoader 의 새로운 인스턴스를 작성합니다. 시큐리티 매니저가 인스톨 되고 있는 경우, 이 메소드로부터 반환된 URLClassLoader 의 loadClass 메소드는, 클래스를 로드하기 전에 SecurityManager.checkPackageAccess 메소드를 호출합니다.

파라미터:
urls - 클래스 및 자원의 검색 대상의 URL
parent - 위양을 위한 친클래스 로더
반환값:
결과적으로 얻을 수 있는 클래스 로더

newInstance

public static URLClassLoader  newInstance(URL [] urls)
지정된 URL 와 디폴트의 친클래스 로더에 대한, URLClassLoader 의 새로운 인스턴스를 작성합니다. 시큐리티 매니저가 인스톨 되고 있는 경우, 이 메소드로부터 반환된 URLClassLoader 의 loadClass 메소드는, 클래스를 로드하기 전에 SecurityManager.checkPackageAccess 를 호출합니다.

파라미터:
urls - 클래스 및 자원의 검색 대상의 URL
반환값:
결과적으로 얻을 수 있는 클래스 로더

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.