631 {
632 var javaType = FindOrLoadGenericClass(name, mode);
633 if (javaType != null)
634 return javaType;
635
636#if !FIRST_PASS && !IMPORTER && !EXPORTER
637
639 return null;
640
641 Profiler.Enter("ClassLoader.loadClass");
642
643 try
644 {
645
646
647 var c = (
java.
lang.Class)ClassLoaderAccessor.InvokeLoadClassInternal(GetJavaClassLoader(), name);
648 if (c == null)
649 return null;
650
651
652 var type = RuntimeJavaType.FromClass(c);
653 if (type.Name != name)
654 return null;
655
656 return type;
657 }
658 catch (
java.
lang.ClassNotFoundException x)
659 {
661 throw new ClassLoadingException(ikvm.runtime.Util.mapException(x), name);
662
663 return null;
664 }
665 catch (global::java.lang.ThreadDeath)
666 {
667 throw;
668 }
669 catch (Exception x)
670 {
671 if ((mode &
LoadMode.SuppressExceptions) == 0)
672 throw new ClassLoadingException(ikvm.runtime.Util.mapException(x), name);
673
675 {
676 var cl = GetJavaClassLoader();
677 if (cl != null)
678 {
679 var sb = new ValueStringBuilder();
680 var sep = "";
681 while (cl != null)
682 {
683 sb.Append(sep);
684 sb.Append(cl.ToString());
685 sep = " -> ";
686 cl = cl.getParent();
687 }
688
689 Diagnostics.GenericClassLoadingError($"ClassLoader chain: {sb.ToString()}");
690 }
691
692 var m = ikvm.runtime.Util.mapException(x);
693 Diagnostics.GenericClassLoadingError(m.ToString() + Environment.NewLine + m.StackTrace);
694 }
695
696 return null;
697 }
698 finally
699 {
700 Profiler.Leave("ClassLoader.loadClass");
701 }
702#else
703 return null;
704#endif
705 }
static readonly Diagnostic GenericClassLoadingError
The 'GenericClassLoadingError' diagnostic.