JavaTM 2 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 檔案。

創建 URLClassLoader 實例的 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 都是指向目錄的。如果不是以該字元結束,則認為該 URL 指向一個將根據需要下載和打開的 JAR 檔案。

如果有安全管理器,該方法首先調用安全管理器的 checkCreateClassLoader 方法以確保允許創建類別載入器。

參數:
urls - 從其位置載入類別和資源的 UR
parent - 用於委託的父類別載入器
拋出:
SecurityException - 如果存在安全管理器,且其 checkCreateClassLoader 方法不允許創建類別載入器。
另請參見:
SecurityManager.checkCreateClassLoader()

URLClassLoader

public URLClassLoader(URL[] urls)
使用預設的委託父 ClassLoader 為指定的 URL 建構一個新 URLClassLoader。首先在父類別載入器中搜尋 URL,然後按照為類別和資源指定的順序搜尋 URL。這裡假定任何以 '/' 結束的 URL 都是指向目錄的。如果不是以該字元結束,則認為該 URL 指向一個將根據需要下載和打開的 JAR 檔案。

如果有安全管理器,該方法首先調用安全管理器的 checkCreateClassLoader 方法以確保允許創建類別載入器。

參數:
urls - 從其位置載入類別和資源的 URL
拋出:
SecurityException - 如果安全管理器存在並且其 checkCreateClassLoader 方法不允許創建類別載入器。
另請參見:
SecurityManager.checkCreateClassLoader()

URLClassLoader

public URLClassLoader(URL[] urls,
                      ClassLoader parent,
                      URLStreamHandlerFactory factory)
為指定的 URL、父類別載入器和 URLStreamHandlerFactory 創建新 URLClassLoader。該父參數將充當委託的父類別載入器。該處理器參數將充當創建新 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。

覆寫:
類別 ClassLoader 中的 findClass
參數:
name - 類別的名稱
返回:
結果類別
拋出:
ClassNotFoundException - 如果無法找到該類別

definePackage

protected Package definePackage(String name,
                                Manifest man,
                                URL url)
                         throws IllegalArgumentException
用該 ClassLoader 中的名稱定義一個新套件。該指定的 Manifest 中包含的屬性將用於包含包版本和密封資訊。對於密封的套件,此附加 URL 從載入該套件的 URL 指定程式碼源 URL。

參數:
name - 套件的名稱
man - 套件含套件的版本和密封資訊的 Manifest
url - 套件的程式碼源 url,或者如果沒有,則為 null
返回:
新定義的 Package 物件
拋出:
IllegalArgumentException - 如果套件的名稱與該類別載入器或其祖先之一中現有的套件重名

findResource

public URL findResource(String name)
在 URL 搜尋路徑中尋找具有指定名稱的資源。

覆寫:
類別 ClassLoader 中的 findResource
參數:
name - 資源的名稱
返回:
資源的 URL,或者如果無法找到該資源,則返回 null

findResources

public Enumeration<URL> findResources(String name)
                               throws IOException
返回表示 URL 搜尋路徑中具有指定名稱的所有資源的 URL 列舉。

覆寫:
類別 ClassLoader 中的 findResources
參數:
name - 資源名稱
返回:
URL列舉
拋出:
IOException - 如果發生 I/O 異常

getPermissions

protected PermissionCollection getPermissions(CodeSource codesource)
返回給定 codesource 物件的權限。該方法的實作首先調用 super.getPermissions,然後基於 codesource 的 URL 添加權限。

如果此 URL 的協議為 "jar",那麼授予的權限將基於 Jar 檔案 URL 所請求的權限。

如果協議為 "file",並且路徑指定了某個檔案,則要授予對該檔案的讀權限。如果協議為 "file",並且路徑是一個目錄,則要授予該目錄中的所有檔案及其(遞歸)子目錄中包含的所有檔案讀權限。

如果協議不是 "file",則允許連接到和接收來自 URL 主機的連接。

覆寫:
類別 SecureClassLoader 中的 getPermissions
參數:
codesource - codesource
返回:
授予 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 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only