public static global::java.lang.Class LoadClass(object classLoader, Assembly assembly, string name)
{
try
{
TypeWrapper tw = null;
if (classLoader == null)
{
tw = ClassLoaderWrapper.GetBootstrapClassLoader().LoadClassByDottedName(name);
}
else if (assembly != null)
{
AssemblyClassLoader_ acl = global::IKVM.Internal.AssemblyClassLoader.FromAssembly(assembly);
tw = acl.GetLoadedClass(name);
if (tw == null)
{
tw = acl.LoadGenericClass(name);
}
if (tw == null)
{
tw = acl.LoadReferenced(name);
}
if (tw == null)
{
throw new ClassNotFoundException(name);
}
}
else
{
// this must be a GenericClassLoader
tw = ((GenericClassLoader)ClassLoaderWrapper.GetClassLoaderWrapper(classLoader)).LoadClassByDottedName(name);
}
Tracer.Info(Tracer.ClassLoading, "Loaded class \"{0}\" from {1}", name, classLoader == null ? "boot class loader" : classLoader);
return(tw.ClassObject);
}
catch (RetargetableJavaException x)
{
Tracer.Info(Tracer.ClassLoading, "Failed to load class \"{0}\" from {1}", name, classLoader == null ? "boot class loader" : classLoader);
throw x.ToJava();
}
}