Отладка ClassNotFoundException - PullRequest
       2

Отладка ClassNotFoundException

0 голосов
/ 22 октября 2010

В моем коде у меня есть вложенный класс, который содержит объект и целое число. Это для обозначения начального и конечного местоположений для метода подсписка.

Код выполняется до такой степени, что объект и целое число имеют установленные значения. Я подтвердил это в отладчике.

Следующая строка затем вызывает ListLoc<E> startNode= new ListLoc<E>(start, startElement);, и это то, что отключает исключение.

Класс уже определен как

 private class ListLoc<E>{
    public Chunk<E> node;
    public int index;

    /* This object is created to hold a chunk and index location.  Two
     * objects will be created for the start and end locations for 
     * creating a sublist
     */
    public ListLoc(Chunk<E> node, int index){
        this.node= node;
        this.index= index;
    }
}

Странно то, что эта часть кода выполнялась нормально, прежде чем я заменил локальный startNode глобальной переменной. Эта идея не сработала, поэтому я изменил переменную обратно, и это исключение возникло.

Я не внес никаких изменений в путь к классам или их выполнение. Единственный раз, когда это всплывает в отладчике

РЕДАКТИРОВАТЬ: добавлена ​​трассировка стека

ClassNotFoundException (Throwable). (String, Throwable) строка: 217
ClassNotFoundException (Exception). (String, Throwable) строка: недоступно ClassNotFoundException. (Строка) строка: недоступно
URLClassLoader $ 1.run () строка: недоступно
AccessController.doPrivileged (PrivilegedExceptionAction, AccessControlContext) строка: недоступно [собственный метод]
Панель запуска $ ExtClassLoader (URLClassLoader) .findClass (String): недоступно
Линия запуска $ ExtClassLoader.findClass (String): недоступно
Панель запуска $ ExtClassLoader (ClassLoader) .loadClass (String, boolean): не доступно Панель запуска $ AppClassLoader (ClassLoader) .loadClass (String, boolean): недоступно Строка запуска $ AppClassLoader.loadClass (String, boolean): недоступно
Панель запуска $ AppClassLoader (ClassLoader) .loadClass (String): недоступно

На мой взгляд, это classLoader, который вызывает исключение.

1 Ответ

2 голосов
/ 22 октября 2010

Было бы полезно, если бы вы могли уточнить, что такое исключение, однако, я предполагаю, что вы получаете ClassNotFound для E.

Похоже, ваш профессор еще не прояснил концепцию дженериков. Я бы порекомендовал просмотреть общую структуру данных. Совет, который я бы дал, - выяснить, почему E не определен и почему вы пытаетесь создать их список.

Я думаю, что следующая ссылка может помочь уточнить синтаксис и концепции, лежащие в их основе: http://download.oracle.com/javase/tutorial/extra/generics/index.html

Особенно следующий раздел: http://download.oracle.com/javase/tutorial/extra/generics/simple.html

...