java.lang.Object
java.lang.Throwable
java.lang.Exception
com.sun.jdi.ClassNotLoadedException
- すべての実装されたインタフェース:
Serializable
public class ClassNotLoadedException extends Exception
要求されたクラスが適切なクラス・ローダーによってロードされていないことを示すためにスローされます。
多数のVMにより実行される遅延クラス・リンクのため、関連しているクラスがロードされる前にフィールドまたは変数がプログラム内で認識可能な状態になる可能性があります。 クラスがロードされるまでの間に利用可能なのは、シグニチャ文字列だけです。 このようなフィールドまたは変数にJDIから値を設定しようとすると、目的のクラスがロードされていないために、適切な型チェックを行うことができません。 配列要素の要素クラスについても同じことが言えます。
この場合、すぐにクラスをロードして問題を解決しようとすることはお勧めできません。 イベントの通常の過程に従ってロードされるのを待たずにデバッガでクラスをロードすることには、2つの問題があります。
- 適切なクラス・ローダーが実行されてクラスのローディングにデッドロックが発生しないことが保証されません。 クラス・ローダーは任意のJavaプログラミング言語コードで構成でき、クラス・ロード・メソッドは通常同期化されます。 デバッガが行う作業のほとんどは、スレッドが中断しているときに発生します。 同一のクラス・ローダー内で別のアプリケーション・スレッドが中断している場合、デッドロックが発生する可能性が高くなります。
- クラスの通常のロード順序を変更することにより、アプリケーション内のバグが見えたり隠れたりします。 侵入的でないデバッガでは、デバッグされるアプリケーションの動作を変えないように努めなければいけません。
この例外は、該当のクラスが囲むクラスのクラス・ローダーから認識可能になるまでスローされます。 つまり、囲むクラスのクラス・ローダーは、該当クラスの起動クラス・ローダーになります。 詳細は、「Java Virtual Machine仕様」を参照してください。
- 導入されたバージョン:
- 1.3
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ説明ClassNotLoadedException
(String className) ClassNotLoadedException
(String className, String message) -
メソッドのサマリー
クラス java.lang.Throwableで宣言されたメソッド
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString