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

MyClassオブジェクトを他のオブジェクトから取得しましたが、行の代わりになぜだろうと思っています

MyClass[] myClass = cProxy.getMyClass();

MyClassクラスの静的変数「MyClass.UNKNOWN」を呼び出すと、例外がスローされましたか?

NoClassDefFoundErrorとClassNotFoundExceptionの深い意味は何ですか?ありがとう

4

2 に答える 2

1

trycatchブロックですべての例外をキャッチします。try catchを削除するか、catchに例外を出力すると、cProxy.getMyClass();を使用したときに同じ例外が表示されます。

すべての例外をキャッチすることは良い習慣ではありません!

于 2012-06-06T08:00:10.363 に答える
1

これは、両方の例外についてのjavaDocsからの抜粋です。

NoClassDefFoundError: Java仮想マシンまたはClassLoaderインスタンスがクラスの定義をロードしようとした場合(通常のメソッド呼び出しの一部として、または新しい式を使用した新しいインスタンスの作成の一部として)、クラスの定義が見つからなかった場合にスローされます。検索されたクラス定義は、現在実行中のクラスがコンパイルされたときに存在していましたが、定義が見つかりません。

ClassNotFoundException : アプリケーションが以下を使用して文字列名を使用してクラスをロードしようとするとスローされます。•クラスClassのforNameメソッド。•クラスClassLoaderのfindSystemClassメソッド。•クラスClassLoaderのloadClassメソッド。しかし、指定された名前のクラスの定義が見つかりませんでした。

于 2012-06-06T08:01:18.530 に答える