先上代码try {
Class.forName(taskclass).newInstance();
} catch (Exception e) {
System.err.println("got it");
}以上是测试某个类是否能实例化,其中taskclass就是待测试的类.
在程序执行之前将taskclass删除,程序输出结果是got it.没有任何问题.然后修改taskclass,并在其中调用了另一个类TestClass.TestClass类在该project中是不存在的
执行之后报java.lang.NoClassDefFoundError
这个异常无法捕获,现在想捕获这个异常,该怎么做?
Class.forName(taskclass).newInstance();
} catch (Exception e) {
System.err.println("got it");
}以上是测试某个类是否能实例化,其中taskclass就是待测试的类.
在程序执行之前将taskclass删除,程序输出结果是got it.没有任何问题.然后修改taskclass,并在其中调用了另一个类TestClass.TestClass类在该project中是不存在的
执行之后报java.lang.NoClassDefFoundError
这个异常无法捕获,现在想捕获这个异常,该怎么做?
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
java.lang.NoClassDefFoundError继承关系。
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
java.lang.NoClassDefFoundError
这可是Error啊!程序时无法处理这个Error的
那就没有别的办法了吗?
我是在别的地方把TestClass编译好,然后将class文件复制在上面测试的project下的.
在运行的时候是实实在在的报出Exception in thread "main" java.lang.NoClassDefFoundError:Exception in thread "main" java.lang.NoClassDefFoundError: com/foxboard/tool/InitProperties
at com.foxboard.task.ps2.Psplostreport.<init>(Psplostreport.java:18)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.foxboard.timertask.task.TimerMissionManager.init(TimerMissionManager.java:187)
at com.foxboard.timertask.task.TimerMissionManager.<init>(TimerMissionManager.java:61)
at com.foxboard.timertask.task.TimerMissionManager.getInstance(TimerMissionManager.java:34)
at com.foxboard.timertask.task.TimerMissionManager.main(TimerMissionManager.java:318)
Caused by: java.lang.ClassNotFoundException: com.foxboard.tool.InitProperties
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 11 more
如果是后者我告诉你只有经验才能解决
如果是前者你确认你那个类存在吗?路径对吗?如果是用IDE,那么是在一个工程下吗?