在java程序中如何加载自己写的类?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

在java程序中如何加载自己写的类?

蛮大人123 2016-03-18 16:31:14 2026
public class TestReflection {
public static void main(String[] args) {
    try {
        //new S();
        Class.forName("S"); 
        ClassLoader.getSystemClassLoader().loadClass("S"); // 用AppClassLoader加载

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}
}
class S {
static {
System.out.println("S is loaded!");
}

public S() {
System.out.println("S is instance!");
}
}

java.lang.ClassNotFoundException: S 这样的错误,有大神知道吗? 另外这2个加载方法有区别吗?

java类加载加载 类的加载java java自己写 java类加载
分享到
取消 提交回答
全部回答(2)
  • 1285483425203531
    2019-07-17 19:06:57
    用-classpath来指定。
    0 0
  • 蛮大人123
    2019-07-17 19:06:57

    Class.forName(String className)使用装载当前类的类装载器来装载指定类。因为class.forName(String className)方法内部调用了Class.forName(className,true, this.getClass().getClassLoader())方法,如你所见,第三个参数就是指定类装载器,显而易见,它指定的是装载当前类的类装载器的实例,也就是this.getClass().getClassLoader();
    classLoader.loadClass(StringclassName , boolean resolve);需要手动指定类装载器的实例。
    所以这两种类装载方式的区别之一是一个默认使用装载当前类实例的类装载器来装载指定类,而另一个则需要手动指定一个类装载器的实例。

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

相似问题
最新问题