newInstance()| ClassNotFoundException | NoClassDefFounfError

时间:2017-08-23 15:59:27

标签: java

以下是代码,当我给出命令java Test A然后我收到错误NoClassDefFoundError并且当我给出命令java Test S然后错误是ClassNotFound。

根据我的知识,如果使用newInstance()并且找不到类,那么ClassNotFound错误应该是

为什么错误存在差异?

enter image description here

class Test {

public static void main(String[] args) throws Exception
{
    System.out.println("In Main Method");
    Object o = Class.forName(args[0]).newInstance();
    System.out.println(o.getClass().getName());
}

}

class Student
{

}

class Teacher
{

}

1 个答案:

答案 0 :(得分:-1)

根据我的知识,如果使用newInstance()并且找不到类,那么ClassNotFound错误应该是

    @CallerSensitive
public static Class<?> forName(String className)
            throws ClassNotFoundException {
    Class<?> caller = Reflection.getCallerClass();
    return forName0(className, true, ClassLoader.getClassLoader(caller), caller);
}

forName方法抛出ClassNotFoundException例外。

newInstance方法正在抛出InstantiationExceptionIllegalAccessException

我无法重现您的问题,我得到ClassNotFoundException