public class URLClassLoader extends SecureClassLoader implements Closeable
URLClassLoader,创建实例的线程的accesscontrolcontext时将使用随后加载类和资源。
被加载的类是默认情况下允许只访问URL指定当URLClassLoader了。
Constructor and Description |
---|
URLClassLoader(URL[] urls)
构建为指定的URL使用默认母
ClassLoader 代表新urlclassloader。
|
URLClassLoader(URL[] urls, ClassLoader parent)
构建新的urlclassloader给定的URL。
|
URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
为指定的URL构造一个新的urlclassloader,父类装载器,并urlstreamhandlerfactory。
|
Modifier and Type | Method and Description |
---|---|
protected void |
addURL(URL url)
将指定的URL的URL列表搜索类和资源。
|
void |
close()
关闭URLClassLoader,这样就可以不再被用来承载新的类或资源被本机定义。
|
protected 软件包 |
definePackage(String name, Manifest man, URL url)
定义了一个新的软件包的名字在这类加载器。
|
protected 类<?> |
findClass(String name)
查找并从“网址搜索路径”中指定的名称加载该类。
|
URL |
findResource(String name)
在“网址”搜索路径上查找具有指定名称的资源。
|
Enumeration<URL> |
findResources(String name)
返回表示具有指定名称的“在”上的所有资源的网址的枚举。
|
protected PermissionCollection |
getPermissions(CodeSource codesource)
返回给定代码资源对象的权限。
|
InputStream |
getResourceAsStream(String name)
返回用于读取指定资源的输入流。
|
URL[] |
getURLs()
返回加载类和资源的网址的搜索路径。
|
static URLClassLoader |
newInstance(URL[] urls)
创建指定的URL和默认的父类装载器的URLClassLoader的一个新实例。
|
static URLClassLoader |
newInstance(URL[] urls, ClassLoader parent)
创建指定的URL和父类加载器的URLClassLoader的一个新实例。
|
defineClass, defineClass
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
public URLClassLoader(URL[] urls, ClassLoader parent)
如果存在安全管理器,该方法首先调用安全管理器的checkCreateClassLoader
方法保证一个类加载器的创作是允许的。
urls
-从加载的类和资源的URL
parent
-代表父类装载器
SecurityException
-如果存在一个安全管理及其
checkCreateClassLoader
方法不允许一个类装载器创建。
null
urls
NullPointerException
。
SecurityManager.checkCreateClassLoader()
public URLClassLoader(URL[] urls)
ClassLoader
代表新urlclassloader。在父类装载器中的第一次搜索后,将在指定的类和资源的顺序中搜索该网址。结束与“/”的任何一个网址都被假定为指向一个目录。否则,假设的网址是指一个罐子文件,将被下载,并按需要打开。
如果存在安全管理器,该方法首先调用安全管理器的checkCreateClassLoader
方法保证一个类加载器的创作是允许的。
urls
-从加载的类和资源的URL
SecurityException
-如果存在一个安全管理及其
checkCreateClassLoader
方法不允许一个类装载器创建。
null
urls
NullPointerException
。
SecurityManager.checkCreateClassLoader()
public URLClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
如果存在安全管理器,该方法首先调用安全管理器的checkCreateClassLoader
方法保证一个类加载器的创作是允许的。
urls
-从加载的类和资源的URL
parent
-代表父类装载器
factory
- urlstreamhandlerfactory创建URL时使用
SecurityException
-如果存在一个安全管理及其
checkCreateClassLoader
方法不允许一个类装载器创建。
null
urls
NullPointerException
。
SecurityManager.checkCreateClassLoader()
public InputStream getResourceAsStream(String name)
搜索顺序的文档中描述的ClassLoader.getResource(String)
。
getResourceAsStream
方法重写,继承类
ClassLoader
name
-资源名称
null
如果资源不能被发现
public void close() throws IOException
在罐子的情况下:和文件:网址,它也关闭任何打开的文件。如果另一个线程加载一个类的时候close
方法被调用,那么该负载的结果是未定义的。
该方法作出了最大努力试图关闭所有打开的文件,以抓IOException
s内部。未检查的异常和错误都没有被捕获。调用关闭一个已经关闭的加载程序没有任何效果。
close
接口
Closeable
close
接口
AutoCloseable
IOException
如果关闭任何文件的类装载器打开了一次。任何这样的例外都被内部捕获。如果只有一个被抓住,那么它被重新抛出。如果捕获了一个以上的异常,那么第二个和下面的异常被添加作为第一个被捕获的第一个被捕获的被抑制的异常,然后被重新抛出。
SecurityException
-如果一个安全管理设置,它否认
RuntimePermission
("closeClassLoader")
protected void addURL(URL url)
如果指定的URL是null
或已在URL的列表,或者如果该程序被关闭,然后调用该方法没有效果。
url
的URL添加到URL搜索路径
public URL[] getURLs()
protected 类<?> findClass(String name) throws ClassNotFoundException
findClass
方法重写,继承类
ClassLoader
name
-类的名字
ClassNotFoundException
-如果类不被发现,或如果程序关闭。
null
name
NullPointerException
。
protected 软件包 definePackage(String name, Manifest man, URL url) throws IllegalArgumentException
name
-包名称
man
-显含包版本和密封的信息
url
-包源代码的URL,如果没有返回null
IllegalArgumentException
如果包名称复制现有包在这类装载器或其祖先之一
public URL findResource(String name)
findResource
方法重写,继承类
ClassLoader
name
-资源的名称
URL
,或
null
如果资源无法找到,或者如果装载机是封闭的。
public Enumeration<URL> findResources(String name) throws IOException
findResources
方法重写,继承类
ClassLoader
name
-资源名称
Enumeration
的
URL
s如果装载机是封闭的,枚举将空。
IOException
如果发生I/O异常
protected PermissionCollection getPermissions(CodeSource codesource)
如果这个网址的协议是“罐子”,那么授予的权限是基于该权限,是由罐子文件的网址所要求的。
如果该协议是“文件”,有一个权限组件,那么可以连接和接受该权限的连接可能被授予。如果该协议是“文件”,路径指定了一个文件,那么就可以读取该文件的权限。如果协议是“文件”,路径是一个目录,允许读取所有文件和目录(递归)中包含的所有文件和子目录。
如果该协议不是“文件”,那么允许连接和接受来自该网址的主机的连接是理所当然的。
getPermissions
方法重写,继承类
SecureClassLoader
codesource
- CodeSource
null
codesource
NullPointerException
。
public static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
loadClass
方法返回此方法将调用
SecurityManager.checkPackageAccess
方法之前加载类。
urls
-搜索类和资源的URL
parent
-代表父类装载器
null
urls
NullPointerException
。
public static URLClassLoader newInstance(URL[] urls)
loadClass
方法返回此方法将调用
SecurityManager.checkPackageAccess
之前加载的类。
urls
-搜索类和资源的URL
null
urls
NullPointerException
。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.