草庐IT

MyClassLoader

全部标签

java - 让 JVM 使用我自己的类加载器

我编写了自己的类加载器。我需要使用我的类加载器加载我所有的类。我已将以下内容传递给VM:-Djava.system.class.loader=MyClassLoader只有我的包中第一个引用的类正在使用我的类加载器加载。我的包中的其他类正在使用AppClassLoader加载。这是MyClassLoader的样子:importjava.io.IOException;importjava.io.InputStream;importjava.net.URL;importjava.util.Enumeration;publicclassMyClassLoaderextendsClassLoa

java - 类加载器困惑

我在几个地方看到“Class.getClassLoader()返回用于加载特定类的ClassLoader”,因此,我对以下示例的结果感到困惑:packagetest;importjava.lang.*;publicclassClassLoaders{publicstaticvoidmain(String[]args)throwsjava.lang.ClassNotFoundException{MyClassLoadermcl=newMyClassLoader();Classclazz=mcl.loadClass("test.FooBar");System.out.println(cla

java - 是否可以在没有 java 中的 main 和 static block 的情况下在控制台上打印消息?

在一次采访中我问过这个问题:如果不使用static和main我们怎么能在控制台上打印消息?这可能吗? 最佳答案 您可以定义一个自定义类加载器来打印您的消息:publicclassMyClassLoaderextendsClassLoader{publicMyClassLoader(ClassLoaderother){super(other);System.out.println("Hithere");System.exit(0);}}然后运行java命令:java-Djava.system.class.loader=MyClassL

java - Java Classloader 能否重写系统类(仅它们的副本)的字节码?

所以我有一个类加载器(MyClassLoader),它在内存中维护一组“特殊”类。这些特殊类被动态编译并存储在MyClassLoader内部的字节数组中。当MyClassLoader被请求一个类时,它首先检查它的specialClasses是否在委托(delegate)给系统类加载器之前,字典包含它。它看起来像这样:classMyClassLoaderextendsClassLoader{MapspecialClasses;publicMyClassLoader(Mapsb){this.specialClasses=sb;}@OverridepublicClassloadClass(S