public class

URLClassLoader

extends SecureClassLoader
java.lang.Object
   ↳ java.lang.ClassLoader
     ↳ java.security.SecureClassLoader
       ↳ java.net.URLClassLoader

Class Overview

This class loader is responsible for loading classes and resources from a list of URLs which can refer to either directories or JAR files. Classes loaded by this URLClassLoader are granted permission to access the URLs contained in the URL search list.

Summary

Public Constructors
URLClassLoader(URL[] urls)
Constructs a new URLClassLoader instance.
URLClassLoader(URL[] urls, ClassLoader parent)
Constructs a new URLClassLoader instance.
URLClassLoader(URL[] searchUrls, ClassLoader parent, URLStreamHandlerFactory factory)
Constructs a new URLClassLoader instance.
Public Methods
URL findResource(String name)
Returns an URL referencing the specified resource or null if the resource could not be found.
Enumeration<URL> findResources(String name)
Returns all known URLs which point to the specified resource.
URL[] getURLs()
Returns the search list of this URLClassLoader.
static URLClassLoader newInstance(URL[] urls, ClassLoader parentCl)
Returns a new URLClassLoader instance for the given URLs and the specified ClassLoader as its parent.
static URLClassLoader newInstance(URL[] urls)
Returns a new URLClassLoader instance for the given URLs and the system ClassLoader as its parent.
Protected Methods
void addURL(URL url)
Adds the specified URL to the search list.
Package definePackage(String packageName, Manifest manifest, URL url)
Defines a new package using the information extracted from the specified manifest.
Class<?> findClass(String clsName)
Tries to locate and load the specified class using the known URLs.
PermissionCollection getPermissions(CodeSource codesource)
Gets all permissions for the specified codesource.
[Expand]
Inherited Methods
From class java.security.SecureClassLoader
From class java.lang.ClassLoader
From class java.lang.Object

Public Constructors

public URLClassLoader (URL[] urls)

Since: API Level 1

Constructs a new URLClassLoader instance. The newly created instance will have the system ClassLoader as its parent. URLs that end with "/" are assumed to be directories, otherwise they are assumed to be JAR files.

Parameters
urls the list of URLs where a specific class or file could be found.
Throws
SecurityException if a security manager exists and its checkCreateClassLoader() method doesn't allow creation of new ClassLoaders.

public URLClassLoader (URL[] urls, ClassLoader parent)

Since: API Level 1

Constructs a new URLClassLoader instance. The newly created instance will have the system ClassLoader as its parent. URLs that end with "/" are assumed to be directories, otherwise they are assumed to be JAR files.

Parameters
urls the list of URLs where a specific class or file could be found.
parent the class loader to assign as this loader's parent.
Throws
SecurityException if a security manager exists and its checkCreateClassLoader() method doesn't allow creation of new class loaders.

public URLClassLoader (URL[] searchUrls, ClassLoader parent, URLStreamHandlerFactory factory)

Since: API Level 1

Constructs a new URLClassLoader instance. The newly created instance will have the specified ClassLoader as its parent and use the specified factory to create stream handlers. URLs that end with "/" are assumed to be directories, otherwise they are assumed to be JAR files.

Parameters
searchUrls the list of URLs where a specific class or file could be found.
parent the ClassLoader to assign as this loader's parent.
factory the factory that will be used to create protocol-specific stream handlers.
Throws
SecurityException if a security manager exists and its checkCreateClassLoader() method doesn't allow creation of new ClassLoaders.

Public Methods

public URL findResource (String name)

Since: API Level 1

Returns an URL referencing the specified resource or null if the resource could not be found.

Parameters
name the name of the requested resource.
Returns
  • the URL which points to the given resource.

public Enumeration<URL> findResources (String name)

Since: API Level 1

Returns all known URLs which point to the specified resource.

Parameters
name the name of the requested resource.
Returns
  • the enumeration of URLs which point to the specified resource.
Throws
IOException if an I/O error occurs while attempting to connect.

public URL[] getURLs ()

Since: API Level 1

Returns the search list of this URLClassLoader.

Returns
  • the list of all known URLs of this instance.

public static URLClassLoader newInstance (URL[] urls, ClassLoader parentCl)

Since: API Level 1

Returns a new URLClassLoader instance for the given URLs and the specified ClassLoader as its parent. The method loadClass() of the new instance will call the SecurityManager's checkPackageAccess() before loading a class.

Parameters
urls the list of URLs that is passed to the new URLClassloader.
parentCl the parent class loader that is passed to the new URLClassloader.
Returns
  • the created URLClassLoader instance.

public static URLClassLoader newInstance (URL[] urls)

Since: API Level 1

Returns a new URLClassLoader instance for the given URLs and the system ClassLoader as its parent. The method loadClass() of the new instance will call SecurityManager.checkPackageAccess() before loading a class.

Parameters
urls the list of URLs that is passed to the new URLClassloader.
Returns
  • the created URLClassLoader instance.

Protected Methods

protected void addURL (URL url)

Since: API Level 1

Adds the specified URL to the search list.

Parameters
url the URL which is to add.

protected Package definePackage (String packageName, Manifest manifest, URL url)

Since: API Level 1

Defines a new package using the information extracted from the specified manifest.

Parameters
packageName the name of the new package.
manifest the manifest containing additional information for the new package.
url the URL to the code source for the new package.
Returns
  • the created package.
Throws
IllegalArgumentException if a package with the given name already exists.

protected Class<?> findClass (String clsName)

Since: API Level 1

Tries to locate and load the specified class using the known URLs. If the class could be found, a class object representing the loaded class will be returned.

Parameters
clsName the name of the class which has to be found.
Returns
  • the class that has been loaded.
Throws
ClassNotFoundException if the specified class cannot be loaded.

protected PermissionCollection getPermissions (CodeSource codesource)

Since: API Level 1

Gets all permissions for the specified codesource. First, this method retrieves the permissions from the system policy. If the protocol is "file:/" then a new permission, FilePermission, granting the read permission to the file is added to the permission collection. Otherwise, connecting to and accepting connections from the URL is granted.

Parameters
codesource the code source object whose permissions have to be known.
Returns
  • the list of permissions according to the code source object.