internal static TypeWrapper LoadClassNoThrow(ClassLoaderWrapper classLoader, string name) { try { TypeWrapper wrapper = classLoader.LoadClassByDottedNameFast(name); if (wrapper == null) { string elementTypeName = name; if (elementTypeName.StartsWith("[")) { int skip = 1; while (elementTypeName[skip++] == '[') { ; } elementTypeName = elementTypeName.Substring(skip, elementTypeName.Length - skip - 1); } #if STATIC_COMPILER classLoader.IssueMessage(Message.ClassNotFound, elementTypeName); #else Tracer.Error(Tracer.ClassLoading, "Class not found: {0}", elementTypeName); #endif wrapper = new UnloadableTypeWrapper(name); } return(wrapper); } catch (RetargetableJavaException x) { // HACK keep the compiler from warning about unused local GC.KeepAlive(x); #if !STATIC_COMPILER && !FIRST_PASS && !STUB_GENERATOR && !NOEMIT if (Tracer.ClassLoading.TraceError) { java.lang.ClassLoader cl = (java.lang.ClassLoader)classLoader.GetJavaClassLoader(); if (cl != null) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); string sep = ""; while (cl != null) { sb.Append(sep).Append(cl); sep = " -> "; cl = cl.getParent(); } Tracer.Error(Tracer.ClassLoading, "ClassLoader chain: {0}", sb); } Exception m = ikvm.runtime.Util.mapException(x.ToJava()); Tracer.Error(Tracer.ClassLoading, m.ToString() + Environment.NewLine + m.StackTrace); } #endif // !STATIC_COMPILER && !FIRST_PASS && !STUB_GENERATOR return(new UnloadableTypeWrapper(name)); } }
public void AddLoader(ClassLoader cl) { lock (lc) { if (cl != null) { if (lc.Contains(cl)) { return; } lc.Add(cl); bool added = false; if (cl is AppDomainAssemblyClassLoader) { AppDomainAssemblyClassLoaders.Add((AppDomainAssemblyClassLoader)cl); added = true; } if (cl is AssemblyClassLoader) { AssemblyClassLoaders.Add((AssemblyClassLoader)cl); added = true; } if (cl is ClassPathAssemblyClassLoader) { ClassPathAssemblyClassLoaders.Add((ClassPathAssemblyClassLoader)cl); added = true; } if (!added) { if (cl is MethodUtil) { MethodUtils.Add((MethodUtil)cl); added = true; } else if (cl is URLClassLoader) { URLClassLoaders.Add((URLClassLoader)cl); added = true; } } AddLoader(cl.getParent()); } } }
internal static TypeWrapper LoadClassNoThrow(ClassLoaderWrapper classLoader, string name) { try { TypeWrapper wrapper = classLoader.LoadClassByDottedNameFast(name); if (wrapper == null) { Tracer.Error(Tracer.ClassLoading, "Class not found: {0}", name); wrapper = new UnloadableTypeWrapper(name); } return(wrapper); } catch (RetargetableJavaException x) { // HACK keep the compiler from warning about unused local GC.KeepAlive(x); #if !STATIC_COMPILER && !FIRST_PASS && !STUB_GENERATOR if (Tracer.ClassLoading.TraceError) { java.lang.ClassLoader cl = (java.lang.ClassLoader)classLoader.GetJavaClassLoader(); if (cl != null) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); string sep = ""; while (cl != null) { sb.Append(sep).Append(cl); sep = " -> "; cl = cl.getParent(); } Tracer.Error(Tracer.ClassLoading, "ClassLoader chain: {0}", sb); } Exception m = ikvm.runtime.Util.mapException(x.ToJava()); Tracer.Error(Tracer.ClassLoading, m.ToString() + Environment.NewLine + m.StackTrace); } #endif // !STATIC_COMPILER && !FIRST_PASS && !STUB_GENERATOR return(new UnloadableTypeWrapper(name)); } }
public void AddLoader(ClassLoader cl) { lock (lc) { if (cl != null) { if (lc.Contains(cl)) return; lc.Add(cl); bool added = false; if (cl is AppDomainAssemblyClassLoader) { AppDomainAssemblyClassLoaders.Add((AppDomainAssemblyClassLoader)cl); added = true; } if (cl is AssemblyClassLoader) { AssemblyClassLoaders.Add((AssemblyClassLoader)cl); added = true; } if (cl is ClassPathAssemblyClassLoader) { ClassPathAssemblyClassLoaders.Add((ClassPathAssemblyClassLoader)cl); added = true; } if (!added) { if (cl is MethodUtil) { MethodUtils.Add((MethodUtil)cl); added = true; } else if (cl is URLClassLoader) { URLClassLoaders.Add((URLClassLoader)cl); added = true; } } AddLoader(cl.getParent()); } } }