新聞中心
URLClassLoader

創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)具備承接各種類型的網(wǎng)站建設(shè)、做網(wǎng)站項(xiàng)目的能力。經(jīng)過十載的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。
java.lang.Object
|---java.lang.ClassLoader
|---|---java.security.SecureClassLoader
|---|---|---java.net.URLClassLoader
public class URLClassLoader
extends SecureClassLoader
implements Closeable此類加載器用于從引用 JAR 文件和目錄的 URL 的搜索路徑加載類和資源。 假設(shè)任何以“/”結(jié)尾的 URL 都指向一個(gè)目錄。 否則,假定 URL 引用將根據(jù)需要打開的 JAR 文件。
創(chuàng)建 URLClassLoader 實(shí)例的線程的 AccessControlContext 將在隨后加載類和資源時(shí)使用。
默認(rèn)情況下,加載的類僅被授予訪問在創(chuàng)建 URLClassLoader 時(shí)指定的 URL 的權(quán)限。
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| URLClassLoader(URL[] urls) | 使用默認(rèn)委托父 ClassLoader 為指定的 URL 構(gòu)造一個(gè)新的 URLClassLoader。 |
| URLClassLoader(URL[] urls, ClassLoader parent) | 為給定的 URL 構(gòu)造一個(gè)新的 URLClassLoader。 |
| URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) | 為指定的 URL、父類加載器和 URLStreamHandlerFactory 構(gòu)造一個(gè)新的 URLClassLoader。 |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| protected void | addURL(URL url) | 將指定的 URL 附加到 URL 列表以搜索類和資源。 |
| void | close() | 關(guān)閉此 URLClassLoader,使其不能再用于加載此加載器定義的新類或資源。 |
| protected Package | definePackage(String name, Manifest man, URL url) | 在此 ClassLoader 中按名稱定義新包。 |
| protected Class> | findClass(String name) | 從 URL 搜索路徑中查找并加載具有指定名稱的類。 |
| URL | findResource(String name) | 在 URL 搜索路徑上查找具有指定名稱的資源。 |
| EnumerationURL | findResources(String name) | 返回一個(gè) URL 枚舉,表示 URL 搜索路徑上具有指定名稱的所有資源。 |
| protected PermissionCollection | getPermissions(CodeSource codesource) | 返回給定代碼源對(duì)象的權(quán)限。 |
| InputStream | getResourceAsStream(String name) | 返回用于讀取指定資源的輸入流。 |
| URL[] | getURLs() | 返回用于加載類和資源的 URL 的搜索路徑。 |
| static URLClassLoader | newInstance(URL[] urls) | 為指定的 URL 和默認(rèn)父類加載器創(chuàng)建 URLClassLoader 的新實(shí)例。 |
| static URLClassLoader | newInstance(URL[] urls, ClassLoader parent) | 為指定的 URL 和父類加載器創(chuàng)建 URLClassLoader 的新實(shí)例。 |
| 從類 java.lang.ClassLoader 繼承的方法 |
|---|
| clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 從類 java.security.SecureClassLoader 繼承的方法 |
|---|
| defineClass, defineClass |
構(gòu)造函數(shù)詳細(xì)信息
URLClassLoader
public URLClassLoader(URL[] urls, ClassLoader parent)
為給定的 URL 構(gòu)造一個(gè)新的 URLClassLoader。 在第一次在指定的父類加載器中搜索之后,將按照為類和資源指定的順序搜索 URL。 假設(shè)任何以“/”結(jié)尾的 URL 都指向一個(gè)目錄。 否則,假定 URL 指向?qū)⒏鶕?jù)需要下載和打開的 JAR 文件。
如果有安全管理器,此方法首先調(diào)用安全管理器的 checkCreateClassLoader 方法,以確保允許創(chuàng)建類加載器。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| urls | 從中加載類和資源的 URL |
| parent | 委托的父類加載器 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 checkCreateClassLoader 方法不允許創(chuàng)建類加載器。 |
| NullPointerException | 如果網(wǎng)址為空。 |
URLClassLoader
public URLClassLoader(URL[] urls)
使用默認(rèn)委托父 ClassLoader 為指定的 URL 構(gòu)造一個(gè)新的 URLClassLoader。 在第一次在父類加載器中搜索之后,將按照為類和資源指定的順序搜索 URL。 假設(shè)任何以“/”結(jié)尾的 URL 都指向一個(gè)目錄。 否則,假定 URL 指向?qū)⒏鶕?jù)需要下載和打開的 JAR 文件。
如果有安全管理器,此方法首先調(diào)用安全管理器的 checkCreateClassLoader 方法,以確保允許創(chuàng)建類加載器。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| urls | 從中加載類和資源的 URL |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 checkCreateClassLoader 方法不允許創(chuàng)建類加載器。 |
| NullPointerException | 如果網(wǎng)址為空。 |
URLClassLoader
public URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
為指定的 URL、父類加載器和 URLStreamHandlerFactory 構(gòu)造一個(gè)新的 URLClassLoader。 parent 參數(shù)將用作委托的父類加載器。 factory 參數(shù)將用作流處理程序工廠,以在創(chuàng)建新的 jar URL 時(shí)獲取協(xié)議處理程序。
如果有安全管理器,此方法首先調(diào)用安全管理器的 checkCreateClassLoader 方法,以確保允許創(chuàng)建類加載器。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| urls | 從中加載類和資源的 URL |
| parent | 委托的父類加載器 |
| factory | 創(chuàng)建 URL 時(shí)使用的 URLStreamHandlerFactory |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| SecurityException | 如果存在安全管理器并且其 checkCreateClassLoader 方法不允許創(chuàng)建類加載器。 |
| NullPointerException | 如果網(wǎng)址為空。 |
方法詳情
getResourceAsStream
public InputStream getResourceAsStream(String name)
返回用于讀取指定資源的輸入流。 如果這個(gè)加載器被關(guān)閉,那么通過這個(gè)方法打開的任何資源都將被關(guān)閉。
ClassLoader.getResource(java.lang.String) 的文檔中描述了搜索順序。
覆蓋:
類 ClassLoader 中的 getResourceAsStream
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 資源名稱 |
返回:
用于讀取資源的輸入流,如果找不到資源,則返回 null
close
public void close() throws IOException
關(guān)閉此 URLClassLoader,使其不能再用于加載此加載器定義的新類或資源。 由委托層次結(jié)構(gòu)中的任何此加載器的父級(jí)定義的類和資源仍然可以訪問。 此外,任何已加載的類或資源仍然可以訪問。
對(duì)于 jar: 和 file: URL,它還會(huì)關(guān)閉它打開的所有文件。 如果調(diào)用 close 方法時(shí)另一個(gè)線程正在加載一個(gè)類,則該加載的結(jié)果是未定義的。
該方法通過在內(nèi)部捕獲 IOExceptions 盡最大努力嘗試關(guān)閉所有打開的文件。 未經(jīng)檢查的異常和錯(cuò)誤不會(huì)被捕獲。 在已經(jīng)關(guān)閉的加載程序上調(diào)用 close 無效。
指定者:
在接口 AutoCloseable 中關(guān)閉
指定者:
在接口Closeable中關(guān)閉
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果關(guān)閉此類加載器打開的任何文件導(dǎo)致 IOException。 任何此類異常都會(huì)在內(nèi)部捕獲。 如果只有一個(gè)被抓住,那么它會(huì)被重新拋出。 如果捕獲了多個(gè)異常,則將第二個(gè)和隨后的異常添加為捕獲的第一個(gè)異常的抑制異常,然后重新拋出該異常。 |
| SecurityException | 如果設(shè)置了安全管理器,并且它拒絕 RuntimePermission("closeClassLoader") |
addURL
protected void addURL(URL url)
將指定的 URL 附加到 URL 列表以搜索類和資源。
如果指定的 URL 為 null 或已在 URL 列表中,或者此加載器已關(guān)閉,則調(diào)用此方法無效。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| url | 要添加到 URL 搜索路徑的 URL |
getURLs
public URL[] getURLs()
返回用于加載類和資源的 URL 的搜索路徑。 這包括指定給構(gòu)造函數(shù)的原始 URL 列表,以及隨后由 addURL() 方法附加的任何 URL。
返回:
用于加載類和資源的 URL 的搜索路徑。
findClass
protected Class> findClass(String name) throws ClassNotFoundException
從 URL 搜索路徑中查找并加載具有指定名稱的類。 任何引用 JAR 文件的 URL 都會(huì)根據(jù)需要加載和打開,直到找到該類。
覆蓋:
類 ClassLoader 中的 findClass
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 班級(jí)名稱 |
返回:
結(jié)果類
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| ClassNotFoundException | 如果找不到類,或者加載器已關(guān)閉。 |
| NullPointerException | 如果名稱為空。 |
definePackage
protected Package definePackage(String name, Manifest man, URL url) throws IllegalArgumentException
在此 ClassLoader 中按名稱定義新包。 指定 Manifest 中包含的屬性將用于獲取包版本和封裝信息。 對(duì)于密封包,附加 URL 指定從中加載包的代碼源 URL。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 包名 |
| man | 包含包版本和密封信息的清單 |
| url | 包的代碼源 url,如果沒有,則為 null |
返回:
新定義的 Package 對(duì)象
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果包名稱與此類加載器或其祖先之一中的現(xiàn)有包重復(fù) |
findResource
public URL findResource(String name)
在 URL 搜索路徑上查找具有指定名稱的資源。
覆蓋:
類 ClassLoader 中的 findResource
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 資源的名稱 |
返回:
資源的 URL,如果找不到資源,或者加載器已關(guān)閉,則返回 null。
findResources
public EnumerationURL findResources(String name) throws IOException
返回一個(gè) URL 枚舉,表示 URL 搜索路徑上具有指定名稱的所有資源。
覆蓋:
類 ClassLoader 中的 findResources
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| name | 資源名稱 |
返回:
URL 的枚舉 如果加載程序關(guān)閉,則枚舉將為空。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IOException | 如果發(fā)生 I/O 異常 |
getPermissions
protected PermissionCollection getPermissions(CodeSource codesource)
返回給定代碼源對(duì)象的權(quán)限。 該方法的實(shí)現(xiàn)首先調(diào)用super.getPermissions,然后根據(jù)codesource的URL添加權(quán)限。
如果此 URL 的協(xié)議是“jar”,則授予的權(quán)限基于 Jar 文件的 URL 所需的權(quán)限。
如果協(xié)議是“文件”并且存在權(quán)限組件,則可以授予連接到該權(quán)限并接受來自該權(quán)限的連接的權(quán)限。 如果協(xié)議是“文件”并且路徑指定了文件,則授予讀取該文件的權(quán)限。 如果協(xié)議是“文件”并且路徑是目錄,則授予讀取所有文件和(遞歸)該目錄中包含的所有文件和子目錄的權(quán)限。
如果協(xié)議不是“文件”,則授予連接和接受來自 URL 主機(jī)的連接的權(quán)限。
覆蓋:
類 SecureClassLoader 中的 getPermissions
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| codesource | the codesource |
返回:
授予代碼源的權(quán)限
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果代碼源為空。 |
newInstance
public static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
為指定的 URL 和父類加載器創(chuàng)建 URLClassLoader 的新實(shí)例。 如果安裝了安全管理器,該方法返回的 URLClassLoader 的 loadClass 方法會(huì)在加載類之前調(diào)用 SecurityManager.checkPackageAccess 方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| urls | 用于搜索類和資源的 URL |
| parent | 委托的父類加載器 |
返回:
生成的類加載器
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果網(wǎng)址為空。 |
newInstance
public static URLClassLoader newInstance(URL[] urls)
為指定的 URL 和默認(rèn)父類加載器創(chuàng)建 URLClassLoader 的新實(shí)例。 如果安裝了安全管理器,則此方法返回的 URLClassLoader 的 loadClass 方法將在加載類之前調(diào)用 SecurityManager.checkPackageAccess。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| urls | 用于搜索類和資源的 URL |
返回:
生成的類加載器
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果網(wǎng)址為空。 |
網(wǎng)站名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSURLClassLoader
瀏覽路徑:http://www.dlmjj.cn/article/dpephhi.html


咨詢
建站咨詢
