1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
 * %W% %E%
 *
 * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package com.sun.jdi;

/**
 * Thrown to indicate that the requested class has
 * not yet been loaded through the appropriate class loader.
 * <p>
 * Due to the lazy class linking performed by many VMs, it is 
 * possible for a field or variable to be visible in a program
 * before the associated class is loaded. Until the class is loaded
 * all that is available is a signature string. If an attempt is made to 
 * set the value of such a field or variable from JDI, the appropriate 
 * type checking cannot be done because the destination class has not been 
 * loaded. The same is true for the element class of array elements.
 * <p>
 * It is not advisable to solve this problem by attempting a class load on 
 * the fly in this case. There are two problems in having the debugger load 
 * a class instead of waiting for it to load over the normal course 
 * of events. 
 * <ul>
 * <li>There can be no guarantee that running the appropriate class
 * loader won't cause a deadlock in loading the
 * class. Class loaders can consist of arbitrary
 * Java<sup><font size=-2>TM</font></sup> programming language code and the 
 * class loading methods are usually synchronized. Most of the work 
 * done by a debugger happens when threads are suspended. If another 
 * application thread is suspended within the same class loader,
 *  a deadlock is very possible.
 * <li>Changing the order in which classes are normally loaded may either mask
 * or reveal bugs in the application. An unintrusive debugger should strive
 * to leave unchanged the behavior of the application being debugged.
 * </ul>
 * To avoid these potential problems, this exception is thrown. 
 * <p>
 * Note that this exception will be thrown until the class in question
 * is visible to the class loader of enclosing class. (That is, the 
 * class loader of the enclosing class must be an <i>initiating</i> class
 * loader for the class in question.)
 * See the <a href="http://java.sun.com/docs/books/vmspec/">Java
 * Virtual Machine Specification</a> for 
 * more details. 
 *
 * @author Gordon Hirsch
 * @since  1.3
 */
public class ClassNotLoadedException extends Exception
{
    private String className;

    public ClassNotLoadedException(String className) {
    super();
        this.className = className;
    }

    public ClassNotLoadedException(String className, String message) {
    super(message);
        this.className = className;
    }

    public String className() {
        return className;
    }
}
			
			

Browsed Source: [clear]