1
try {
  MyClass[] myClass = cProxy.getMyClass();
  return "" + myClass[0];
} catch (Exception e) {
  // nothing to do
}
return "" + MyClass.UNKNOWN; <-- NoClassDefFoundError thrown

我从其他对象获得了 MyClass 对象,我只是想知道为什么而不是 line

MyClass[] myClass = cProxy.getMyClass();

调用 MyClass 类的静态变量“MyClass.UNKNOWN”时是否抛出异常?

NoClassDefFoundError 和 ClassNotFoundException 的深层含义是什么?谢谢

4

2 回答 2

1

以下是关于这两个异常的 java Docs 的摘录。

NoClassDefFoundError: 如果 Java 虚拟机或 ClassLoader 实例尝试加载类的定义(作为正常方法调用的一部分或作为使用 new 表达式创建新实例的一部分)并且找不到类的定义,则抛出此异常。搜索到的类定义在编译当前执行的类时已经存在,但无法再找到该定义。

ClassNotFoundException : 当应用程序尝试使用以下字符串名称加载类时抛出: • Class 类中的 forName 方法。• ClassLoader 类中的 findSystemClass 方法。• ClassLoader 类中的loadClass 方法。但找不到具有指定名称的类的定义。

于 2012-06-06T08:01:18.530 回答
1

您在 try catch 块中捕获所有异常。删除try catch,或者在catch中打印异常,使用cProxy.getMyClass()时会看到同样的异常;

捕获所有异常不是一个好习惯!

于 2012-06-06T08:00:10.363 回答