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