以下是代码,当我给出命令java Test A然后我收到错误NoClassDefFoundError并且当我给出命令java Test S然后错误是ClassNotFound。
根据我的知识,如果使用newInstance()并且找不到类,那么ClassNotFound错误应该是
为什么错误存在差异?
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
{
}
答案 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
方法正在抛出InstantiationException
和IllegalAccessException
我无法重现您的问题,我得到ClassNotFoundException