Did you look at the other "forName" method, which includes as an argument an instance of a "ClassLoader" you can use to construct an instance of the class you name with the other argument?
Code:
forName
public static Class<?> forName(String name,
boolean initialize,
ClassLoader loader)
throws ClassNotFoundException
Returns the Class object associated with the class or interface with the
given string name, using the given class loader. Given the fully qualified name
for a class or interface (in the same format returned by getName) this method
attempts to locate, load, and link the class or interface. The specified class
loader is used to load the class or interface. If the parameter loader is null,
the class is loaded through the bootstrap class loader. The class is initialized
only if the initialize parameter is true and if it has not been initialized earlier.
If name denotes a primitive type or void, an attempt will be made to locate
a user-defined class in the unnamed package whose name is name. Therefore,
this method cannot be used to obtain any of the Class objects representing
primitive types or void.
If name denotes an array class, the component type of the array class is
loaded but not initialized.
For example, in an instance method the expression:
Class.forName("Foo")
is equivalent to:
Class.forName("Foo", true, this.getClass().getClassLoader())
Note that this method throws errors related to loading, linking or initializing
as specified in Sections 12.2, 12.3 and 12.4 of The Java Language
Specification. Note that this method does not check whether the requested
class is accessible to its caller.
If the loader is null, and a security manager is present, and the caller's
class loader is not null, then this method calls the security manager's
checkPermission method with a RuntimePermission("getClassLoader")
permission to ensure it's ok to access the bootstrap class loader.
Parameters:
name - fully qualified name of the desired class
initialize - whether the class must be initialized
loader - class loader from which the class must be loaded
Returns:
class object representing the desired class
Throws:
LinkageError - if the linkage fails
ExceptionInInitializerError - if the initialization provoked by this method fails
ClassNotFoundException - if the class cannot be located by the specified class loader
Since:
1.2
See Also:
forName(String), ClassLoader
Take a look at the API documentation for ClassLoader ...
Bookmarks